在iOS 5中,我有一个UILabel元素最初放置在nib中。我想让它的x坐标保持不变。我希望它可以只占用1行或2行。如果超过两行,它应该使用换行设置来显示省略号。
我使用numberOfLines
属性和-sizeToFit
方法。
如果我将UILabel的numberOfLines
属性设置为0,然后调用-sizeToFit
方法,它会正确地将某些文本分成两行以适应空间。但是,在很少的情况下,当一行足够长以延伸到3行时,我得到了三行,这是我不想要的。如果我将numberOfLines
属性设置为2,它实际上把整个内容都拉伸到一行并使我的初始框架比nib中设置的宽得多。
CGRect titleFrame = [[self titleLabel] frame];
[[self titleLabel] setNumberOfLines:0];
[[self titleLabel] setText:newProductTitleText];
[[self titleLabel] sizeToFit];
CGRect newTitleFrame = [[self titleLabel] frame];
CGRect只是用来在事后进行计算的。将numberOfLines
设置为0可以使长文本自动换行,但不会更改frame的原始origin.x,并且不会限制文本只能显示在2行中。将numberOfLines
属性设置为2时,它控制最多允许文本占用的行数,但仍然可以正常工作。当使用numberOfLines
除0以外的其他值时,sizeToFit
扩展时会向负X方向扩展,而不是向正X、Y方向扩展。注:已经将“Autosize” struts设置为上部和左部以将其固定在最小x,y处。感谢任何洞见。
-sizeToFit
设置负X而不是在UILabel中垂直对齐文本的问题。 - chadbag