我正在尝试动态设置标签大小。它以一种奇怪的方式工作,我将一些文本切断。 我首先设置我的标签文本,然后尝试像这样调整大小。
_switch2Label.text = @"Call on alarm, there will be no call if other user of alarm system will recieve an alarm call and confirm (answer) it by pressing 0#";
_switch2Label.numberOfLines = 0;
[self newFrame:_switch2Label];
- (void) newFrame:(UILabel *) label
{
CGSize maxSize = self.view.bounds.size;
maxSize.width = maxSize.width - 30;
CGSize labelSize = [label.text sizeWithFont:label.font constrainedToSize:maxSize lineBreakMode:label.lineBreakMode];
CGRect newFrame = label.frame;
newFrame.size.height = labelSize.height;
label.frame = newFrame;
}
我只获得三行文字,而此标签需要五行。也许有人可以在这看到我的错误?如果我向标签添加更多文本,它会被显示,但仍然会有大约两行标签文本被删除。
答案 0 :(得分:2)
_switch2Label.text = @"Call on alarm, there will be no call if other user of alarm system will recieve an alarm call and confirm (answer) it by pressing 0#,";
_switch2Label.numberOfLines = 0;
[self newFrame:_switch2Label];
- (void) newFrame:(UILabel *) label
{
CGSize maximumSize = CGSizeMake(label.frame.size.width, 10000);
//maxSize.width = maxSize.width - 30;
CGSize labelSize = [label.text sizeWithFont:label.font constrainedToSize:maximumSize lineBreakMode:UILineBreakModeWordWrap];
CGRect newFrame = label.frame;
newFrame.size.height = labelSize.height;
label.frame = newFrame;
}
使用此代码块,可能会有所帮助。
答案 1 :(得分:2)
我已经改变了你的方法......请检查它..它可以帮助你..
- (void) newFrame:(UILabel *) label
{
CGSize constraint = CGSizeMake(300, 1000.0f);
CGSize size_txt_overview1 = [label.text sizeWithFont:[UIFont fontWithName:@"Arial Rounded MT Bold" size:15] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
label.frame = CGRectMake(20,20, size_txt_overview1.width, size_txt_overview1.height+15);
}
答案 2 :(得分:0)
为什么以编程方式调整标签大小?这是您在IB中使用autorezizeMask无法做到的事情吗?
答案 3 :(得分:0)
标签的约束大小未按您的意图计算,目前,您的代码将标签高度限制为视图的边界高度。将maxSize实例更改为:
CGSize maxSize = CGSizeMake(self.view.bounds.size.width - 30, MAXFLOAT);
CGSize labelSize = ...
这样做可确保约束不受视图边界的约束。如果您希望标签能够超出视图的边界,您可能还需要考虑设置视图的clipsToBounds属性。