UIButton:根据titleLabel文本计算UIButton的高度

时间:2012-09-21 18:32:29

标签: iphone ios uitableview uibutton uilabel

我在自定义UITableViewCell中有自定义UIButton。我想根据按钮的titleLabel的可变文本内容在自定义表格单元格中设置UIButton的高度。

我尝试了以下方法来计算高度

[NSString sizeWithFont:constrainedToSize:lineBreakMode:];

但是我无法根据titleLabel成功更改按钮高度。

此外,由于此按钮是自定义UITableViewCell的一部分,我还需要根据自定义UIButton的高度更改单元格的高度。

在实现UITableView的委托和数据源方法的ViewController中,我尝试用以下方法确定高度

- (CGFloat) tableView: (UITableView *) tableView 
heightForRowAtIndexPath:(NSIndexPath *)indexPath

但没有成功。

什么是解决这个问题的最佳解决方案或方法?

3 个答案:

答案 0 :(得分:4)

假设按钮的宽度为145.0f:

CGSize constraintSize;

constraintSize.width = 145.0f;

constraintSize.height = MAXFLOAT;

CGSize size = [Label.text sizeWithFont:Label.font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap]; 

然后你可以设置框架:

frame = CGRectMake(0, 0, 145, size.height);

答案 1 :(得分:2)

看起来你做对了,但请记住:

heightForRowAtIndexPath必须返回CGFloat sizeWithFont为您提供文字高度,您需要添加按钮的填充和单元格

使用constrainedToSize:CGSizeMake(###,MAXFLOAT),其中###是您的文字宽度

lineBreakMode:UILineBreakModeWordWrap当然

答案 2 :(得分:1)

您也可以使用[buttonInstance sizeToFit]

 UIButton *lineButton = [[UIButton alloc] initWithFrame:CGRectZero];
 // If padding equals "yes, please"
 [lineButton setContentEdgeInsets:UIEdgeInsetsMake(0.0f, 5.0f, 0.0f, 3.0f)];
 [lineButton setTitle:@"Title" forState:UIControlStateNormal];
 [lineButton sizeToFit];