我正在以编程方式将一个UIButton添加到tableView页脚。此按钮的左右边距等于tableView边距:
UIButton *deleteButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
deleteButton.frame = CGRectMake(10, 60, 300, 34);
deleteButton.autoresizingMask = UIViewAutoresizingFlexibleWidth
我正在添加autoresizingMask,因为我想支持旋转。但是,它不能按我的意思工作,因为按钮一直向下延伸到右侧,如下图所示。
知道怎么解决吗?如果我删除自动调整属性,则边距是正确的。
答案 0 :(得分:1)
UITableView
调整- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
返回的视图(及其所有子视图)的大小。要解决您的问题,您需要一个包装器视图来布局UIButton
而不使用自动调整大小。以下是此类UIView
类的示例实现:
@interface ButtonWrapperView : UIView {
UIButton *_button;
}
@property (nonatomic, readonly) UIButton *button;
@end
@implementation ButtonWrapperView
@synthesize button = _button;
- (id)init
{
if ((self = [super initWithFrame:CGRectZero])) {
_button = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
[self addSubview:_button];
}
return self;
}
- (void)layoutSubviews
{
[super layoutSubviews];
// Layout button
_button.frame = CGRectMake(10.0f, 0.0f, self.bounds.size.width - 20.0f, self.bounds.size.height);
}
- (void)dealloc
{
[_button release];
[super dealloc];
}
@end
只需在- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
中返回此视图,您的按钮就会正常显示。
我还uploaded a sample project完全实现了上述解决方案。