【发布时间】:2011-09-14 17:54:07
【问题描述】:
我有一个多行标签。我希望标签上的文本始终从左上角开始,与标签的高度和行数无关。
现在我正在使用一个属性
[question1Label setContentMode: UIViewContentModeTopLeft];
但它不起作用
谢谢
【问题讨论】:
标签: iphone objective-c ios label alignment
我有一个多行标签。我希望标签上的文本始终从左上角开始,与标签的高度和行数无关。
现在我正在使用一个属性
[question1Label setContentMode: UIViewContentModeTopLeft];
但它不起作用
谢谢
【问题讨论】:
标签: iphone objective-c ios label alignment
我注意到 UILabel 的 contentMode 属性不会影响其文本的对齐方式。使用 textAlignment 属性。
label.textAlignment = UITextAlignmentLeft;
编辑:这将使文本居中对齐。为了从左上角显示文本,您需要使用 NSString 的 sizeWithFont: 方法找到文本的高度。 See this SO post知道怎么做。
作为替代方案,您可以使用UITextField,UIControl 的子类,它继承UIControl 的contentVerticalAlignment 属性。
textField.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
您可以使用此属性来对齐顶部的文本。您可以使用属性userInteractionEnabled 属性来禁止用户编辑文本。
【讨论】:
由于 UITextAlignmentLeft 已被贬值,因此接受的答案不再适用于我。
下面的效果很好!
// Allow multiline label centered
[label setNumberOfLines:0];
[label setTextAlignment:NSTextAlignmentCenter];
【讨论】: