我有一个UILabel,每当我设置它的出口时,我在故事板中为它创建的填充在归属文本下消失,就像它从未出现过一样。留下的文字留在左侧。我该如何解决这个问题?
@IBOutlet weak var mycoollabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
mycoollabel.text = "Wow"
}
答案 0 :(得分:2)
注意:OP在评论中澄清说他们正在使用Interface Builder中的属性文本设置填充。
这里的问题是文字和归因文字之间的混淆,或者,因为这些是代码,它是text
和{{1 }}
在iOS上,很多东西都有attributedText
属性,它只是一个简单的文本字符串,可以在某个地方显示而不需要任何格式化。通常,格式化附加到显示文本的对象,例如,标签具有文本颜色和对齐属性,使其text
看起来像你想要的那样。
在iOS上,大多数(全部?)这些东西也有text
属性,这是一个非常不同的野兽。归属文本包含一个字符串,但也包含显示该字符串所需的特定格式说明 - 文本属性,因此名称。
因此,OP正在他们的故事板中创建一个属性文本配置,然后在代码中修改attributedText
属性。这将使用普通字符串覆盖其格式化字符串,从而丢失其布局配置。
如果您正在寻找使用第一行缩进创建属性字符串,则应尝试以下操作:
text
请注意,您可以在此处使用几种不同的选项,因此您可能需要找到正确的缩进类型以满足您的精确需求。如果右键单击let ps = NSMutableParagraphStyle();
ps.firstLineHeadIndent = 50
let attrs = [NSParagraphStyleAttributeName: ps]
let attributedString = NSAttributedString(string: "Hello, world!", attributes: attrs)
label.attributedText = attributedString
并选择跳转到定义,您将看到所有选项。
答案 1 :(得分:1)
这是因为UILabel
可以包含纯文本或属性文本。您在故事板中设置了属性文本,并添加了一些格式(填充等)。然后,在代码中,用纯文本覆盖该文本(及其所有格式)。
如果要保留格式,则需要设置标签attributedText
属性。并为您创建的NSAttributedString
对象添加所有必要的格式。