我对 iOS 开发相当陌生,对 Storyboard也很陌生。我正在尝试使用带有静态单元格和“分组”样式的 UITableView 创建一个基本表单。
我希望只制作一个 Storyboard并将其用于 iPhone 和 iPad,不确定这是否被推荐,但我并没有真正拥有和设计特定于任一设备的元素,所以如果有很多重复的话我为两个设备系列维护了一个单独的 Storyboard。
因此,我将标签拖到表格单元格的左侧,将文本输入拖到右侧,然后使用自动布局并设置一些约束:
- 标签有一个领先的空间来superview 30
- TextField 有一个到 superview 的尾随空格 30
- 标签和文本字段之间的水平间距约束
- 修复了标签的宽度限制
它在 iPhone 上运行良好,但在 iPad 上,标签和文本字段超出了表格单元格的边缘。这是因为 iPad 在表格单元格的左侧和右侧有更宽的边距(比我使用的 30pt 约束更宽)。
很明显为什么它不起作用。我想我的问题是,这是一种常见的情况,我怀疑有一个简单的解决方案。有兴趣听取建议。有没有办法将标签和文本字段限制在单元格的边缘而不是表格的边缘?如果不是,我应该:
这是显示自动布局约束的屏幕截图:
这就是布局在 iPad 上的行为方式:
最佳答案
我也有同样的问题。我通过为每个水平约束创建 socket 然后根据当前设备是 iPad 还是 iPhone 以编程方式更改常量来解决这个问题。
头文件:
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *myLabelHorizontalConstraint;
viewDidLoad 子程序中的方法文件:
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
myLabelHorizontalConstraint.constant = 60;
} else myLabelHorizontalConstraint.constant = 30;
如果 Storyboard 场景布局中的约束设置为 30(在我的情况下是 iPhone 设置),则可以省略“其他”部分。我只是把它放在上面是为了展示一个完整的例子。
我希望有一个更通用的解决方案,例如 Storyboard中某处的设置或单个调整大小命令。似乎 iPad 静态单元组布局比 iPhone 多缩进 30 点,但在自动布局中并没有弥补这一点。也许我在某个地方遗漏了一些东西。
关于ios - 为 iPhone 和 iPad 布局静态表格单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16619435/