3.5英寸模拟器显示时iOS UITableView高度问题

时间:2013-06-19 17:01:34

标签: ios uitableview uiviewcontroller

带有导航栏,工具栏和admob横幅的UIViewController。下面是通过删除admob横幅,导航栏和工具栏的高度来计算UITableView高度的代码。

如果在iPhone 5和4英寸模拟器显示器上运行,UITableview高度就可以了。 但如果3.5英寸和非视网膜显示,UITableView的底部无法滚动到。

无论是4英寸,3.5英寸和非视网膜显示屏,高度(self.view.bounds)都是相同的,548。细胞高度为41.

对于3.5英寸和非视网膜显示器,如果在删除了admob横幅,导航栏和工具栏高度的高度后减去88(导航栏高度和工具栏高度)。然后UITableView滚动OK。但对于4英寸显示器来说并不行。

任何评论都有帮助,谢谢。

- (void)viewDidLoad{    
    // admob banner     
    bannerView_ = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];    
    bannerView_.rootViewController = self;    
    [self.view addSubview:bannerView_];    

    // uitableview    
    CGRect rect = self.view.bounds;    
    rect.origin.y = bannerView_.frame.size.height;        
    rect.size.height = rect.size.height - bannerView_.frame.size.height
                                        - (self.navigationController.toolbar.frame.size.height)
                                        - (self.navigationController.navigationBar.frame.size.height);

    myTableView = [[UITableView alloc] initWithFrame:rect style:UITableViewStylePlain];    
    [self.view addSubview:myTableView];    
}    

3 个答案:

答案 0 :(得分:3)

尝试以编程方式调整UITableView自动调整属性。

类似这样的事情

myTableView.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin;

<强>更新

使用它来确定您的屏幕大小并以编程方式设置您的UITableView框架高度。(请记住,您需要从表视图高度减少(20),因为您有工具栏)

- (BOOL)hasFourInchDisplay {
    return ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && [UIScreen mainScreen].bounds.size.height == 568.0);
}

答案 1 :(得分:0)

self.view.bounds是否在不同的设备上进行了适当的更改?如果没有,无论您在何处设置整体视图的大小都需要更改。

此外,大多数此逻辑应位于viewWillLayoutSubviews而不是viewDidLoad,因为视图可能会在加载后调整大小。

答案 2 :(得分:0)

这应该有效:

 rect.size.height = self.view.frame.size.height - bannerView_.frame.size.height
                                        - (self.navigationController.toolbar.frame.size.height)
                                        - (self.navigationController.navigationBar.frame.size.height)-20;

// 20状态栏