首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >确定iPad上UITableView的大小

确定iPad上UITableView的大小
EN

Stack Overflow用户
提问于 2012-03-14 20:57:55
回答 2查看 1K关注 0票数 1

我得把桌子的宽度分成2,3,5,...相等的部分。其目的是用2,3,5,...填充表格单元格大小相等的正方形子视图。(图片)当然,桌子的高度取决于此。

这就是我如何确定表的大小,并将其除以要放置的图像的数量。方法numberOfPicsPerRow返回用户选择在表格的每一行中显示的图像数量的整数值。

代码语言:javascript
运行
复制
- (CGFloat) rowHeight{

    fcAppAppDelegate *delegate = (fcAppAppDelegate *);

    CGRect      bounds = self.tableView.bounds;
    //CGRect          bounds = self.view.bounds; // Alternative that returns the same result.
    float       tableWidth; 
    if (UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] delegate].tabBarController.interfaceOrientation))
        tableWidth = bounds.size.width;
    else
        tableWidth = bounds.size.height;

    NSLog (@"tableWidth: %f", tableWidth);
    return tableWidth / [MatrixPhotoListTVC noOfPicsPerRow];
}

这是我第一次设置表格的行高的地方:

代码语言:javascript
运行
复制
- (void)viewDidLoad
{
    [super viewDidLoad];

    self.tableView.rowHeight = [self rowHeight];

}

所有这些在iPhone上都工作正常。但是,在iPad上,tableView.bounds或view.bounds返回(width=320,heiht=372)。有趣的是,当设备旋转时,这些值是正确的。(width=768,height=960)

有人对此有什么解释吗?viewDidLoad不是确定表格大小的合适位置吗?

EN

回答 2

Stack Overflow用户

发布于 2012-03-14 21:16:59

有些人谈论它--在这种情况下,写这个问题--会让一切变得不同。

然而,这也可能发生在其他人身上,因此我将这个问题保留在系统中。这就是答案:

viewDidLoad在视图加载后立即调用。这意味着在大多数情况下,它是从Nib文件加载的。我使用的nib文件仅用于iPhone,而不用于iPad维度。这就是视图尺寸与IB中的尺寸完全相同的原因。

我将调用从viewDidLoad转移到了viewWillAppear,在那里它工作得很好。显然,iOS会在viewDidLoad和viewWillAppear的调用之间自动调整iPad视图的大小(它做得很好)。

如果有人从学术或文献的角度知道我可以打电话的更好的地方,那么我会非常感激。

然而,现在它似乎工作得很好。

票数 1
EN

Stack Overflow用户

发布于 2012-03-14 21:20:00

我会将您的代码切换到-viewWillAppear或-viewDidAppear方法,因为表视图已经完成了任何布局。

如果UITableView被子类化,另一种可能是对方法进行子类化:

代码语言:javascript
运行
复制
- (void)layoutSubviews {
    [super layoutSubviews];
    ....
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9702429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档