我已经找到了答案,但我似乎无法找到答案,所以我在这里提出问题。如果这是重复,请指出正确的页面。
我有一个View Controller,在viewDidLoad中我创建了一个UITableView并将其设置为
CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)
如果UITableView中有内容。如果其中没有任何内容,我将UITableView的框架设置为
CGRectMake(0, 135, self.view.frame.size.width, self.view.frame.size.height)
这样我就可以在它上面显示一条消息。
在这个ViewController中,我有一个添加按钮,按下后,我创建一个新视图,您可以在其中输入或修改现有信息,然后按保存或删除按钮,从超视图中删除视图并重置UITableView的框架回到
CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)
或
CGRectMake(0, 135, self.view.frame.size.width, self.view.frame.size.height)
取决于UITableView中是否有任何内容。 (如果UITableView为空,则设置为第二个,如果它至少有一行,则设置为第一行。)
我遇到的问题是,有时当按下保存或删除按钮后UITableView被设置回(0,0)时,UITableView的第一行被导航栏覆盖,而不是低于它。
如何确保我的UITableView设置在导航栏下方?
答案 0 :(得分:0)
如果您正在使用XIB文件,则可以向视图控制器添加模拟导航栏,以便您可以适当调整元素,使它们不相交。
以编程方式,您可以将tableview的内容插入设置为导航栏的高度+状态栏,如下所示:
self.tableView.contentInset = UIEdgeInsetsMake(44,0,0,0);
当您滚动表格内容时使用插入内容将位于导航栏后面,因此如果您不希望这种情况发生,您应该改变框架,就像您正在做的那样。然而,
CGRectMake(0, 135, self.view.frame.size.width, self.view.frame.size.height)
可能会表现得很奇怪,因为你已经将部分视图从屏幕上移开了,因为你已经将高度设置为屏幕的高度,但你已经将帧偏移了135.这将是正确的矩形:
CGRectMake(0, 135, self.view.frame.size.width, self.view.frame.size.height - 135)
我个人建议您使用插图,但如果移动框架,请确保从高度中减去y偏移量。