2011-06-14 62 views
5

我有一个多行标签。我希望标签上的文本总是从左上角开始,与标签的高度和行数无关。标签多行文本对齐

现在我使用的是财产

[question1Label setContentMode: UIViewContentModeTopLeft]; 

但它不工作

感谢

回答

6

我注意到contentMode属性的UILabel的不影响其文字的对准。使用textAlignment属性。

label.textAlignment = UITextAlignmentLeft; 

编辑:这将对齐文本中心左。为了显示来自左上方的文本,您需要使用sizeWithFont:方法NSString找到文本的高度。 See this SO post知道如何去做。

作为替代,您可以使用UITextFieldUIControl子类,它继承UIControl的contentVerticalAlignment财产。

textField.contentVerticalAlignment = UIControlContentVerticalAlignmentTop; 

您可以使用此属性对齐顶部的文本。您可以通过使用属性userInteractionEnabled属性禁用用户编辑文本。

+1

我使用这个属性,但它只对齐左侧的文本,但我想从顶部开始我的文本。 – Rachit 2011-06-15 04:39:31

+0

@Rachit Taneja,看到我更新的答案 – EmptyStack 2011-06-15 05:06:48

0

接受的答案不再适用于我,因为UITextAlignmentLeft已折旧。

下面的工作很棒!

// Allow multiline label centered 
[label setNumberOfLines:0]; 
[label setTextAlignment:NSTextAlignmentCenter];