Maafkan ketidaktahuan saya tetapi saya menggunakan UILabels sepanjang waktu dan saya bertanya-tanya apakah Anda bisa menunjukkan "misalnya".
daveMac
1
myLabel.numberOfLines = 0memberi Anda label multi-baris yang akan menghormati karakter baris baru. Secara umum meskipun saya suka menggunakan UITextFieldkarena lebih fleksibel. Misalnya, Anda dapat dengan mudah mendeteksi karakter mana yang diketuk pengguna saat bekerja dengan a UITextField, saya rasa Anda tidak dapat melakukannya dengan file UILabel. Tampilan teks juga memiliki banyak fitur rapi lainnya.
John Erck
7
Cara lain adalah dengan menggunakanoption+8
atulkhatri
3
Ingatlah untuk menggunakan huruf besar 'u' jika Anda menggunakan string yang dapat dilokalkan: \ U2022
Nikolaj Nielsen
1
Swift sedikit berbeda, "\ u {2022}"
berangkat
80
tambahkan saja " • "
Bahkan saya mencari sesuatu seperti ini untuk saya textView. Apa yang saya lakukan, cukup tambahkan string di atas dengan string saya dan berikan ke saya textView, hal yang sama juga bisa dilakukan labels.
• Bekerja untuk saya. Saya memiliki * di Xcode yang baru saja saya salin / ganti menggunakan • dan berfungsi dengan baik untuk Label saya. Saya mengganti "Label" dengan •
Brian
49
Ini solusi bagus dengan Swift
let label = UILabel()
label.frame = CGRect(x: 40, y: 100, width: 280, height: 600)
label.textColor = UIColor.lightGray
label.numberOfLines = 0
let arrayString = [
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
"Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",
"Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.",
"Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
]
label.attributedText = add(stringList: arrayString, font: label.font, bullet: "")
self.view.addSubview(label)
Di Swift 4 saya telah menggunakan "•" dengan Baris baru
@IBOutletweakvar bulletLabel: UILabel!let arrayOfLines = ["Eat egg for protein","You should Eat Ghee","Wheat is with high fiber","Avoid to eat Fish "]
for value in arrayOfLines {
bulletLabel.text = bulletLabel.text! + " • " + value + "\n"
}
Lihat tautan ini, saya membuat tampilan Kustom untuk memformat teks dengan poin peluru / simbol / gambar lain (menggunakan properti atributText dari UILabel) sebagai simbol item daftar (Swift 3.0)
https://github.com/akshaykumarboth/SymbolTextLabel-iOS- Cepat
import UIKit
classViewController: UIViewController{
@IBOutletvar symbolView: SymbolTextLabel!var testString = "Understanding the concept of sales"var bulletSymbol = "\u{2022}"var fontsize: CGFloat= 18overridefuncviewDidLoad() {
super.viewDidLoad()
//First way // Dynamically creating SymbolTextLabel objectlet symbolTextLabel = SymbolTextLabel(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
symbolTextLabel.setText(text: testString, symbolCode: bulletSymbol) //setting text and symbol of text item
symbolTextLabel.setFontSize(textSize: fontsize) // setting font size//symbolTextLabel.setSpacing(spacing: 5) // setting space between symbol and textself.view.addSubview(symbolTextLabel)
//second way // from storyboard or interface builder
symbolView.setText(text: testString, symbolCode: bulletSymbol)
//setting text and symbol of text item
symbolView.setFontSize(textSize: fontsize) // setting font size//symbolView.setSpacing(spacing: 5) // setting space between symbol and text
}
}
Jika Anda ingin meratakan teks indentasi untuk bullet point juga, Anda bisa menggunakan metode berikut yang membangun a NSAttributedStringdengan properti indentasi dan spasi yang tepat:
Dan Anda dapat menggunakan metode itu sebagai berikut, dengan meneruskan NSArraydengan teks dan asalkan Anda sudah memiliki UILabel:
NSArray *stringArray = @[@"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
@"Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",
@"Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.",
@"Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
];
label.attributedText = [self attributedStringForBulletTexts:stringArray
withFont:label.font
bulletString:@"•"
indentation:15
lineSpacing:2
paragraphSpacing:10
textColor:UIColor.blackColor
bulletColor:UIColor.grayColor];
Iya. Salin dan tempel poin berikut: •Kompiler Swift dapat menafsirkan dan menampilkan poin seperti yang diinginkan dalam Xcode, tidak ada lagi yang diperlukan.
extension Array where Element == String {
var bulletList: String {
var po = ""for (index, item) in self.enumerated() {
if index != 0 {
po += "\n"
}
po += .bullet + item
}
return po
}
}
print(["get apples", "get oranges", "get a bannana"].bulletList)
Jika Anda memberi suara negatif. Setidaknya memiliki sopan santun untuk mengatakan mengapa.
ScottyBlades
Saya pikir alasannya karena solusi Anda tidak optimal. Cara terbaik adalah menggunakan titik kode unicode.
Robert J. Clegg
Terima kasih atas tanggapan yang bijaksana. Mengapa titik Unicode lebih baik?
ScottyBlades
Karena, jika pengembang perlu melakukan ini beberapa kali, di layar atau proyek yang berbeda (Tidak dalam periode waktu yang sama), itu akan lebih menguntungkan mereka, dengan mengetahui apa nilai poin kodenya. Jadi, tidak perlu pergi dan denda jawaban di atas atau tempat serupa, untuk menyalinnya. Yah, bagaimanapun itu adalah pemikiran saya tentang itu.
Robert J. Clegg
1
@ RobertJ.Clegg Saya baru saja memperbarui jawaban saya untuk memberikan opsi yang dapat digunakan kembali. Dapatkah Anda memberi saya contoh saat string poin kode membuat poin peluru lebih dapat digunakan kembali daripada string poin peluru langsung?
ScottyBlades
0
Jika ada yang mencari teks textview dengan poin-poin seperti saya, di bawah ini jawabannya. Omong-omong, ini hanya berfungsi untuk teks statis.
• Better experience - Refer a friend and How to Play \n• Tournaments performance improvement\n• UI/UX Improvements\n• Critical bug fixes
Saya telah menetapkan teks di atas ke textview. Ini bekerja sebagaimana mestinya untuk saya.
UILabel
s tidak memperlakukan teks mereka sebagai HTML.ALT+8 = •
Jawaban:
Mungkin menggunakan titik kode Unicode untuk karakter poin dalam string Anda?
Tujuan-c
myLabel.text = @"\u2022 This is a list item!";
Cepat 4
myLabel.text = "\u{2022} This is a list item!"
sumber
myLabel.numberOfLines = 0
memberi Anda label multi-baris yang akan menghormati karakter baris baru. Secara umum meskipun saya suka menggunakanUITextField
karena lebih fleksibel. Misalnya, Anda dapat dengan mudah mendeteksi karakter mana yang diketuk pengguna saat bekerja dengan aUITextField
, saya rasa Anda tidak dapat melakukannya dengan fileUILabel
. Tampilan teks juga memiliki banyak fitur rapi lainnya.option+8
tambahkan saja
" • "
Bahkan saya mencari sesuatu seperti ini untuk saya
textView
. Apa yang saya lakukan, cukup tambahkan string di atas dengan string saya dan berikan ke sayatextView
, hal yang sama juga bisa dilakukanlabels
.Saya menjawab ini untuk Penampil masa depan.
sumber
Ini solusi bagus dengan Swift
let label = UILabel() label.frame = CGRect(x: 40, y: 100, width: 280, height: 600) label.textColor = UIColor.lightGray label.numberOfLines = 0 let arrayString = [ "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.", "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." ] label.attributedText = add(stringList: arrayString, font: label.font, bullet: "") self.view.addSubview(label)
Tambahkan atribut peluru
func add(stringList: [String], font: UIFont, bullet: String = "\u{2022}", indentation: CGFloat = 20, lineSpacing: CGFloat = 2, paragraphSpacing: CGFloat = 12, textColor: UIColor = .gray, bulletColor: UIColor = .red) -> NSAttributedString { let textAttributes: [NSAttributedStringKey: Any] = [NSAttributedStringKey.font: font, NSAttributedStringKey.foregroundColor: textColor] let bulletAttributes: [NSAttributedStringKey: Any] = [NSAttributedStringKey.font: font, NSAttributedStringKey.foregroundColor: bulletColor] let paragraphStyle = NSMutableParagraphStyle() let nonOptions = [NSTextTab.OptionKey: Any]() paragraphStyle.tabStops = [ NSTextTab(textAlignment: .left, location: indentation, options: nonOptions)] paragraphStyle.defaultTabInterval = indentation //paragraphStyle.firstLineHeadIndent = 0 //paragraphStyle.headIndent = 20 //paragraphStyle.tailIndent = 1 paragraphStyle.lineSpacing = lineSpacing paragraphStyle.paragraphSpacing = paragraphSpacing paragraphStyle.headIndent = indentation let bulletList = NSMutableAttributedString() for string in stringList { let formattedString = "\(bullet)\t\(string)\n" let attributedString = NSMutableAttributedString(string: formattedString) attributedString.addAttributes( [NSAttributedStringKey.paragraphStyle : paragraphStyle], range: NSMakeRange(0, attributedString.length)) attributedString.addAttributes( textAttributes, range: NSMakeRange(0, attributedString.length)) let string:NSString = NSString(string: formattedString) let rangeForBullet:NSRange = string.range(of: bullet) attributedString.addAttributes(bulletAttributes, range: rangeForBullet) bulletList.append(attributedString) } return bulletList }
Inilah hasilnya:
sumber
Di Swift 4 saya telah menggunakan "•" dengan Baris baru
@IBOutlet weak var bulletLabel: UILabel! let arrayOfLines = ["Eat egg for protein","You should Eat Ghee","Wheat is with high fiber","Avoid to eat Fish "] for value in arrayOfLines { bulletLabel.text = bulletLabel.text! + " • " + value + "\n" }
Keluaran:
sumber
Dalam 3.1 cepat
lblItemName.text = "\u{2022} This is a list item!"
sumber
Lihat tautan ini, saya membuat tampilan Kustom untuk memformat teks dengan poin peluru / simbol / gambar lain (menggunakan properti atributText dari UILabel) sebagai simbol item daftar (Swift 3.0) https://github.com/akshaykumarboth/SymbolTextLabel-iOS- Cepat
import UIKit class ViewController: UIViewController { @IBOutlet var symbolView: SymbolTextLabel! var testString = "Understanding the concept of sales" var bulletSymbol = "\u{2022}" var fontsize: CGFloat= 18 override func viewDidLoad() { super.viewDidLoad() //First way // Dynamically creating SymbolTextLabel object let symbolTextLabel = SymbolTextLabel(frame: CGRect(x: 0, y: 0, width: 0, height: 0)) symbolTextLabel.setText(text: testString, symbolCode: bulletSymbol) //setting text and symbol of text item symbolTextLabel.setFontSize(textSize: fontsize) // setting font size //symbolTextLabel.setSpacing(spacing: 5) // setting space between symbol and text self.view.addSubview(symbolTextLabel) //second way // from storyboard or interface builder symbolView.setText(text: testString, symbolCode: bulletSymbol) //setting text and symbol of text item symbolView.setFontSize(textSize: fontsize) // setting font size //symbolView.setSpacing(spacing: 5) // setting space between symbol and text } }
sumber
Jika Anda ingin meratakan teks indentasi untuk bullet point juga, Anda bisa menggunakan metode berikut yang membangun a
NSAttributedString
dengan properti indentasi dan spasi yang tepat:- (NSAttributedString *)attributedStringForBulletTexts:(NSArray *)stringList withFont:(UIFont *)font bulletString:(NSString *)bullet indentation:(CGFloat)indentation lineSpacing:(CGFloat)lineSpacing paragraphSpacing:(CGFloat)paragraphSpacing textColor:(UIColor *)textColor bulletColor:(UIColor *)bulletColor { NSDictionary *textAttributes = @{NSFontAttributeName: font, NSForegroundColorAttributeName: textColor}; NSDictionary *bulletAttributes = @{NSFontAttributeName: font, NSForegroundColorAttributeName: bulletColor}; NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new]; paragraphStyle.tabStops = @[[[NSTextTab alloc] initWithTextAlignment: NSTextAlignmentLeft location:indentation options:@{}]]; paragraphStyle.defaultTabInterval = indentation; paragraphStyle.lineSpacing = lineSpacing; paragraphStyle.paragraphSpacing = paragraphSpacing; paragraphStyle.headIndent = indentation; NSMutableAttributedString *bulletList = [NSMutableAttributedString new]; for (NSString *string in stringList) { NSString *formattedString = [NSString stringWithFormat:@"%@\t%@\n", bullet, string]; NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:formattedString]; if (string == stringList.lastObject) { paragraphStyle = [paragraphStyle mutableCopy]; paragraphStyle.paragraphSpacing = 0; } [attributedString addAttributes:@{NSParagraphStyleAttributeName: paragraphStyle} range:NSMakeRange(0, attributedString.length)]; [attributedString addAttributes:textAttributes range:NSMakeRange(0, attributedString.length)]; NSRange rangeForBullet = [formattedString rangeOfString:bullet]; [attributedString addAttributes:bulletAttributes range:rangeForBullet]; [bulletList appendAttributedString:attributedString]; } return bulletList; }
Dan Anda dapat menggunakan metode itu sebagai berikut, dengan meneruskan
NSArray
dengan teks dan asalkan Anda sudah memilikiUILabel
:NSArray *stringArray = @[@"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", @"Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", @"Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.", @"Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." ]; label.attributedText = [self attributedStringForBulletTexts:stringArray withFont:label.font bulletString:@"•" indentation:15 lineSpacing:2 paragraphSpacing:10 textColor:UIColor.blackColor bulletColor:UIColor.grayColor];
sumber
Iya. Salin dan tempel poin berikut:
•
Kompiler Swift dapat menafsirkan dan menampilkan poin seperti yang diinginkan dalam Xcode, tidak ada lagi yang diperlukan.Penggunaan kembali
extension String { static var bullet: String { return "• " } } print(String.bullet + "Buy apples") let secondPoint: String = .bullet + "Buy oranges" print(secondPoint)
keluaran
Array yang dapat digunakan kembali
extension Array where Element == String { var bulletList: String { var po = "" for (index, item) in self.enumerated() { if index != 0 { po += "\n" } po += .bullet + item } return po } } print(["get apples", "get oranges", "get a bannana"].bulletList)
keluaran
• get apples • get oranges • get a bannana
sumber
Jika ada yang mencari teks textview dengan poin-poin seperti saya, di bawah ini jawabannya. Omong-omong, ini hanya berfungsi untuk teks statis.
• Better experience - Refer a friend and How to Play \n• Tournaments performance improvement\n• UI/UX Improvements\n• Critical bug fixes
Saya telah menetapkan teks di atas ke textview. Ini bekerja sebagaimana mestinya untuk saya.
sumber
Berikut solusi dari @krunal yang direfraktorisasi menjadi
NSAttributedString
ekstensi Swift 5 :import UIKit public extension NSAttributedString { static func makeBulletList(from strings: [String], bulletCharacter: String = "\u{2022}", bulletAttributes: [NSAttributedString.Key: Any] = [:], textAttributes: [NSAttributedString.Key: Any] = [:], indentation: CGFloat = 20, lineSpacing: CGFloat = 1, paragraphSpacing: CGFloat = 10) -> NSAttributedString { let paragraphStyle = NSMutableParagraphStyle() paragraphStyle.defaultTabInterval = indentation paragraphStyle.tabStops = [ NSTextTab(textAlignment: .left, location: indentation) ] paragraphStyle.lineSpacing = lineSpacing paragraphStyle.paragraphSpacing = paragraphSpacing paragraphStyle.headIndent = indentation let bulletList = NSMutableAttributedString() for string in strings { let bulletItem = "\(bulletCharacter)\t\(string)\n" var attributes = textAttributes attributes[.paragraphStyle] = paragraphStyle let attributedString = NSMutableAttributedString( string: bulletItem, attributes: attributes ) if !bulletAttributes.isEmpty { let bulletRange = (bulletItem as NSString).range(of: bulletCharacter) attributedString.addAttributes(bulletAttributes, range: bulletRange) } bulletList.append(attributedString) } if bulletList.string.hasSuffix("\n") { bulletList.deleteCharacters( in: NSRange(location: bulletList.length - 1, length: 1) ) } return bulletList } }
sumber