0

我在调整 UITableView 的大小以适应 UINavigationBar 和 UITabBar 之间遇到了很多麻烦。我的实现涉及在 viewDidAppear() 中创建自定义框架,然后将 UITableView 设置为适当的框架。尽管此解决方案效果很好,但效果并不理想 - 每次加载视图时屏幕都会有一点痉挛。我认为这个问题是由于 UITableViewb 变成全屏的,因为它想要,然后我在用户眼前调整它的大小。但是,我不知道如何实现我想要的:调整 UITableView 的大小以正确适应屏幕。这是我在 viewDidAppear() 中的实现:

- (void)viewDidAppear:(BOOL)animated{
    [self.view.superview addSubview:navigationBar];

    CGRect frame = self.view.frame;
    frame.size.height = self.view.frame.size.height - navigationBar.frame.size.height;
    frame.origin.y = self.view.frame.origin.y + 44;
    self.tableView.frame = frame;

    [super viewDidAppear:animated];
}

录制在视频上时很难看到效果,而且在 GIF 格式中可能很糟糕,但这是我录制的一个小 GIF动画被诱导的闪光。

如果我在 viewWillAppear() 中使用相同的代码,结果如下: 结果

谢谢!

4

2 回答 2

1

我遇到了这个问题,原来这是视图上的自动布局问题。在 Interface Builder 中,切换到 File Inspector 属性视图并确保未选中“Use Autolayout”。

在此之后,您可以在 viewWillAppear 方法中一致地调整 UITableView 的大小,而不会出现故障。

- (void)viewWillAppear:(BOOL)animated
{
   [super viewWillAppear:animated];
   CGRect frame = [tableView frame];    
   frame.size.height = 365; 
   self.tableView.frame = frame;
}
于 2013-08-07T22:37:58.483 回答
0

为什么要使用viewDidAppear,当这个方法被调用时,你的视图在屏幕上是可见的,那么你当然会收到一个小故障。

您要做的就是将方法从 更改viewDidAppearviewWillAppear

于 2012-06-16T19:57:45.917 回答