用项目符号格式化UILabel?
是否可以在UILabel
设置text
格式来显示项目符号 ?
如果是这样,我该怎么办?
也许在你的string中使用Unicode代码点作为子弹字符?
Objective-C的
myLabel.text = @"\u2022 This is a list item!";
斯威夫特4
myLabel.text = "\u{2022} This is a list item!"
只需添加“•”
即使我正在为我的textView寻找这样的东西。 我做了什么,只是将上面的string附加到我的string,并将其传递给我的textView,同样可以做标签也。 我为未来的Viewer回答了这个问题。
在迅速3.1
lblItemName.text = "\u{2022} This is a list item!"
检查出这个链接,我做了一个自定义视图,以项目符号/其他符号/图像(使用UILabel的attributeText属性)的文本格式作为列表项符号(Swift 3.0) https://github.com/akshaykumarboth/SymbolTextLabel-iOS-迅速;
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 } }
这是与斯威夫特很好的解决scheme
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)
添加项目符号属性
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 }
结果如下:
在Swift 4中我使用了“•”和新行
@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" }
输出: