在 iPad 上自动调整大小

Posted

技术标签:

【中文标题】在 iPad 上自动调整大小【英文标题】:Autoresizing on iPad 【发布时间】:2011-06-25 18:38:49 【问题描述】:

我的 ios 应用程序中有一个 UITableView,根据设备(iPhone 或 iPad),我在 UITableView 的 contentViews 上调整不同项目的大小。

例如,每个单元格的 contentView 都有一个叫做 valueLabel 的东西。根据设备,我会正确调整大小:

if(IDIOM == IPAD)
    valueLabel = [[[UILabel alloc] initWithFrame: CGRectMake( 430.0, 0.0, 216, 44.0 )] autorelease];
else
    valueLabel = [[[UILabel alloc] initWithFrame: CGRectMake( 165.0, 0.0, 80, 44.0 )] autorelease];

然后,我配置标签(颜色、字体等),然后,我有以下代码行:

if(IDIOM != IPAD)
     valueLabel.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight;

事实证明,当我第一次写这篇文章时,我很聪明地这样做了。但我不记得为什么。我正在尝试在 iPhone 和 iPad 上进行支持横向模式的更新。但只有 iPhone 上的 UITableView 在横向模式下大小合适,因为对于 iPad,我没有自动调整大小。如何?

如果我删除条件if(IDIOM != IPAD),标签甚至不会显示,并且我的单元格是空的。

【问题讨论】:

删除条件IDIOM != IPAD? 如果我删除条件 if(IDIOM != IPAD),标签甚至不会出现,而且我的单元格是空的。 我假设您的意思是,标签不会显示在 iPhone 上(如果您删除条件语句) 通常,将背景设置为粉红色或其他一些花哨的颜色会帮助您看到它们,并且您可以在改变方向时观察它们可能在哪里移动; gdb 在这里也很有用,在一个明显的地方休息,po [someView subViews] 可以看到子视图的所有框架以及它们可能在哪里(不可见),它可以给你一个问题的提示 【参考方案1】:

我认为 iPad 中的视图不能自动调整大小。但是您可以根据方向管理您的视图。检查我的答案here。

【讨论】:

也许当时确实如此,但我可以确认自动调整大小确实适用于 iOS 5.0 和 Xcode 4.4 上的 UIView【参考方案2】:

iPad 表格视图所在的外部容器是否在 iPad 调整大小时?

【讨论】:

什么意思?我的 UITableView 在我的 UITableViewController 上。但即使不旋转设备,如果我不包含该 if 语句,我也看不到标签。为什么 iPad 上的自动调整大小会搞砸? 可能是自动调整大小的掩码允许您必须将标签完全移出单元格的边界,430 处的 X 原点对我来说似乎很奇怪。 嗯,我明白你的意思了……抱歉,我帮不上忙。

以上是关于在 iPad 上自动调整大小的主要内容,如果未能解决你的问题,请参考以下文章

带有自动调整大小的 UITabBar

自动调整 iPhone xib 应用程序到 ipad 的大小

iPad - 带有 UITextField 的 UITableView - 方向改变时自动调整大小问题

UIView 子视图不是为 iPad 自动旋转或自动调整大小

在 UITableViewCell 中自动调整 UITextField 的大小

在 ipad/平板电脑上调整背景大小