【发布时间】:2014-10-01 17:07:45
【问题描述】:
在我的自定义UITableViewCell 中,我有一个UIButton。对于特定的单元格(行)对象,我想更改按钮的width。我尝试了很多方法,但无法以任何方式更改按钮的大小。我没有在此单元格中使用AutoLayout,因为此按钮包含文本和图像,并且使用自动布局无法正确设置文本和图像之间的间距。
cellForRowAtIndexPath的代码,启动单元格并调用resize函数:
} 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;
}
也许是他造成的问题....
你能指出我哪里出错了吗?长期以来一直在尝试解决此问题,但无法解决。谢谢。
【问题讨论】:
-
您确定按钮在您执行此操作时已经存在吗?检查 self.button 是否为 != nil,也许你稍后创建按钮?对于帧操作,不需要特殊的额外调用。
-
在
if条件下直接在cellForRowAtIndexPath上更改按钮框架 -
哦,是的,按钮是我的单元格对象中的一个成员,并且链接到 nib 文件中的按钮。 @property (nonatomic, strong) IBOutlet UIButton *button;
-
你确定链接正确吗?
-
@GrzegorzKrukowski,请检查更新的问题
标签: ios objective-c uitableview uibutton width