KFP*_*KFP 5 objective-c uilabel ios
使用autolayout我无法在代码中覆盖我的标签.我在IB中设置了标签属性:Lines = 0,LineBreaks = Word Wrap,但我将我的高度设置为单行,因为选择了哪个单元格确定标签中的文本.所以有时标签只有一行.
在我的viewDidLoad中:
myLabel.text = @”blah, blah, blah….”;
[myLabel setLineBreakMode:NSLineBreakByWordWrapping];
myLabel.numberOfLines = 0; //have tried 1 but didn’t help
[myLabel sizeToFit];
Run Code Online (Sandbox Code Playgroud)
这适用于另一个项目,但我没有使用AutoLayout.AutoLayout似乎覆盖了这些设置.
我甚至补充道
[myLabel setFrame:CGRectMake(20, 135, 280, 80);
Run Code Online (Sandbox Code Playgroud)
但它没有帮助.
允许标签的内在大小确定高度.您是正确的,您需要将numberOfLines属性设置为0.因为您使用的是AutoLayout,所以不要调用sizeToFit,您需要设置标签的preferredMaxLayoutWidth.
这是因为标签的属性仅设置一次(在 中viewDidLoad),而每次调用视图的layoutSubviews 时都会应用自动布局的约束。
此外,根据 Apple 文档,如果 UILabel 正在调整字体,则使用换行文本换行模式将无法很好地配合您的 UILabel。
如果这是一个UIViewController,则将 UILabel 覆盖代码移至- (void)viewDidLayoutSubviews,或者如果这是在 UIView 中,则将代码移至- (void)layoutSubviews。
不要忘记打电话[super viewDidLayoutSubviews]或[super layoutSubviews]参加这些电话。
话虽这么说,如果您发现自己需要覆盖约束,请在 nib 文件中将约束和属性设置为您想要的内容,否则使用纯代码来设置标签。
| 归档时间: |
|
| 查看次数: |
9775 次 |
| 最近记录: |