UITableView框架大小奇怪的行为

时间:2015-07-31 16:27:51

标签: ios objective-c uitableview

我尝试在viewDidLoad:

之后以编程方式将帧大小设置为我的表视图
[_tableView setFrame:CGRectMake(0, topHeight, 
     [[UIScreen mainScreen] bounds].size.width,
     [[UIScreen mainScreen] bounds].size.height - topHeight)];

默认大小为200x200,原点为Y 100:

enter image description here

场景层次结构:

enter image description here

UITableView的实现显示调用setFrame时:

@implementation MainTableView

- (void)setFrame:(CGRect)frame {
    NSLog(@"setFrame: %f %f", frame.size.width, frame.size.height);
    [super setFrame:frame];
}

@end

一切正常,但是当我按下任何单元格而不打印来自setFrame的日志消息时,表格的框架会调整为默认值。小解释视频:http://youtu.be/JUW_rHvCS2I

我不明白为什么我的表格大小在单击格式后变为默认值(200x200)。即使我尝试在viewWillAppear内设置大小(从单元格详细信息视图返回后),它也不起作用。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我无法理解为什么你的tableView没有正确调整大小,因为你还没有提供很多代码来环顾四周。虽然我建议为tableView设置一些约束或调整规则大小,可能是这样的:

http://i.imgur.com/N9fvvIB.png(如果不使用自动布局)

http://i.imgur.com/3Uz8e5e.png(如果使用自动布局)

现在如果你真的只需要通过代码完成这项工作,我建议在设置之前和之后抛出一些包含tableView框架宽度和高度的NSLog。

答案 1 :(得分:0)

尝试_tableView.translatesAutoresizingMaskIntoConstraints = NO。