我在UITableView的页脚中使用了两个UIButton(两个UIView的子视图)。我没有使用UITableViewCell,因为我想要按下按钮,使其看起来像某些iPhone屏幕底部的红色“删除”按钮,例如编辑联系人时。
它的大小和工作正常。但是,该表将根据设备方向更改(横向,纵向等)调整其大小,并且按钮保持其原始宽度。我尝试过使用autoresizing mask但没有任何效果。
它有诀窍,还是更好的方式?
答案 0 :(得分:14)
它应该与autoresizingmasks一起使用,我之前已经完成了,但正确设置视图的宽度并添加正确的大小调整是很重要的。
一些示例代码,用于说明其工作原理。这会创建两个按钮,可以在旋转时调整大小。
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 50)];
view.backgroundColor = [UIColor redColor];
UIButton *buttonA = [UIButton buttonWithType:UIButtonTypeRoundedRect];
buttonA.frame = CGRectMake(20, 5, 125, 40);
[buttonA setTitle:@"ButtonA" forState:UIControlStateNormal];
buttonA.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
[view addSubview:buttonA];
UIButton *buttonB = [UIButton buttonWithType:UIButtonTypeRoundedRect];
buttonB.frame = CGRectMake(175, 5, 125, 40);
[buttonB setTitle:@"ButtonB" forState:UIControlStateNormal];
buttonB.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
[view addSubview:buttonB];
return [view autorelease];
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return 50;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return YES;
}
答案 1 :(得分:0)
请使用2帧作为横向模式的按钮1和纵向模式的另一帧..这将解决..当orientatin更改时检查其横向或纵向并为其指定框架...此处检查模式 willrotatetointerfaceorientation
答案 2 :(得分:0)
我想出的最好的是,在自己的部分中使用一个按钮和一个单元格,然后每个都会适当调整大小。
答案 3 :(得分:0)
除了我只有一个按钮之外,我做了一件与你非常相似的事情。你要返回的uiview应该与tableView本身的宽度相同。
CGFloat footerWidth = mainTableView.frame.size.width;
CGRect frameTableFooter = CGRectMake(0.0, 0.0, footerWidth, 60.0);
viewForTableFooter.frame = frameTableFooter;
// buttons addition
mainTableView.tableFooterView = viewForTableFooter;