如何解决UILabel填充问题?

时间:2015-12-20 00:47:50

标签: ios swift

我有一个UILabel,每当我设置它的出口时,我在故事板中为它创建的填充在归属文本下消失,就像它从未出现过一样。留下的文字留在左侧。我该如何解决这个问题?

@IBOutlet weak var mycoollabel: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.

    mycoollabel.text = "Wow"
}

2 个答案:

答案 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对象添加所有必要的格式。