iOS在UITableViewCell中更改UIButton的宽度

时间:2014-08-08 09:07:22

标签: ios objective-c uitableview uibutton width

在我的自定义UITableViewCell中,我有一个UIButton。对于特定的单元格(行)对象,我想更改按钮的width。我尝试了很多方法,但不能以任何方式改变按钮的大小。我没有在此单元格中使用AutoLayout,因为此按钮包含文本和图像,并且使用自动布局无法正确设置文本和图像之间的间距。

启动单元格并调用resize函数的cellForRowAtIndexPath代码:

    } else if ([text isEqualToString:@"Now"] ) {    //(indexPath.row == 2) {
    vcell.listDataSource = inList;
    count = inList.count;
    vcell.listsTableView.tag = 2;
    [vcell reSizeButton];

自定义UITableViewCell中的方法:

-(void) reSizeButton {
CGRect btnFrame = self.button.frame;
btnFrame.size = CGSizeMake(157.0, btnFrame.size.height);
[self.button setFrame:btnFrame];

//[self.button sizeToFit];
//[self.button setNeedsDisplay];
[self.button setNeedsLayout];

return;
}

正确调用方法。因为它是在启动单元格属性期间调用的,所以我认为我不需要调用来重新加载单元格。

更新:

调用reSizeButton方法后,我调用了setText方法: -

-(void) setButtonText :(NSString *) text withCount:(int)count isExpanded:(BOOL)expanded {
titleText = text;
countNums = count;
cellExpanded = expanded;

[self updateButtonText];

return;
}

-(void) updateButtonText {
countNums = (int)[self.listDataSource count];
NSString *str = [NSString stringWithFormat:@"%@ (%d) ", titleText, countNums ];

[self.button.titleLabel setFont:[UIFont fontWithName:@"OpenSans" size:12.0] ];
[self.button setTitle:str forState:UIControlStateNormal];
//[self.button sizeToFit];
[self.button setNeedsLayout];

return;

}

也许他会引起这个问题......

你能指出我哪里错了吗?我很久以来都在尝试这个,但无法解决它。感谢。

1 个答案:

答案 0 :(得分:0)

感谢@Greg和@Grzegorz Krukowski。感谢您花时间和精力帮助我。

不知道是什么问题,但是我再次取消选中(已经取消选中)来自xib的AutoLayout复选框。再试一次。我的代码与所示的相同。它开始按预期工作。

上帝,无法认识问题并解决了问题。