2017-07-18 44 views
0

我有一个UIViewController,其中包含一个TableView和一个GADBannerView在底部。收到广告后,我更改了TableView的高度,以便广告不会覆盖任何单元格。这在我的iPhone 6(iOS 10)和模拟器(iOS 10)中没有任何问题,但由于某种原因在旧iPhone 4s(iOS 9)上测试我的应用程序时,如果我离开视图,TableView高度会重置控制器,然后返回到它。为什么会发生这种情况,我该如何防止它呢?正在某些设备上重置TableView框架

这是我用来调整tableview的代码。

- (void)adViewDidReceiveAd:(GADBannerView *)view { 

    if (!adRecieved) { 

    view.hidden = NO; 
    CGRect currentRect = self.tableView.frame; 
    currentRect.size.height -= CGRectGetHeight(view.frame); 
    self.tableView.frame = currentRect; 

    adRecieved = YES; 
} 
+0

你可能在默认的视图控制器函数之一中有一些代码重新设置视图框架吗?我会检查你的viewWillAppear,viewDidLoad等的实现,并从那里开始。当你回到 – ascendancy05

+0

@ ascendancy05时,放入一些断点并查看帧值是否适用于宽度和高度。我已经查看了我的代码,没有看到会导致tableview框架重置的内容。在广告加载之前,框架大小为320x480,之后是320x430,但是当我重新进入视图控制器时,它会回到320x480。这不会发生在我的iPhone 6或模拟器上,所以我不知道它是如何与代码相关的。 – RainKing

回答

1

我解决了这个问题,只是编辑我的表视图约束,而不是。现在它在所有设备上表现相同。

- (void)adViewDidReceiveAd:(GADBannerView *)view { 

    if (!adRecieved) { 

     view.hidden = NO; 

     self.tableViewBottom.constant = -50; 

     adRecieved = YES; 
    } 
}