为iPhone和iPad布局静态表格单元格
我相当新的iOS开发和故事板非常新。 我想创build一个基本的forms使用静态单元格和“分组”风格的UITableView。
我希望只能制作一个故事板,并将其用于iPhone和iPad,不确定是否推荐这种方式,但是我没有devise特定于任何设备的元素,所以会出现很多重复的情况我为这两个设备系列维护一个单独的故事板。
所以我将一个标签拖到我的表格单元格的左侧,并将文本input到右侧,然后使用自动布局并设置一些约束条件: – 标签具有领先的空间,超级视图为30 – TextField具有超级视图的尾部空间30 – 标签和文本域之间的水平间距约束 – 标签上的固定宽度约束
它在iPhone上效果很好,但是在iPad上,标签和文本字段超出了表格单元格的边缘。 这是因为iPad在表格单元的左侧和右侧具有更宽的边界(比我使用的宽度更宽)。
这很明显,为什么它不工作。 我想我的问题是,这是一个常见的情况,我怀疑有一个简单的解决scheme。 有兴趣听取build议。 有没有办法将标签和文本字段限制在单元格的边缘而不是表格的边缘? 如果不是,我应该:
- 复制iPhone和iPad的故事板
- 使用像QuickDialog一样的表单库
- 以编程方式添加和排列标签和文本框
- 还有其他build议吗?
以下是一个显示自动布局约束的屏幕截图:
这就是布局在iPad上的performance:
我也有同样的问题。 我通过为每个水平约束创build出口,然后以编程方式改变常量(取决于当前设备是iPad还是iPhone)解决了这个问题。
头文件:
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *myLabelHorizontalConstraint;
方法文件在viewDidLoad子例程中:
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { myLabelHorizontalConstraint.constant = 60; } else myLabelHorizontalConstraint.constant = 30;
如果故事板场景布局中的约束设置为30,在我的情况下是iPhone设置,则可以省略“其他”部分。 我只是把它放在上面,以显示一个完整的例子。
我希望有一个更通用的解决scheme,比如在Storyboard中的一个设置或者一个resize的命令。 看起来iPad的静态单元组布局比iPhone缩进约30个点,但在自动布局中并没有补偿这一点。 也许我在某个地方失去了一些东西。
我prefere解决scheme3 ^^使用cellForRow:atIndexPath:
方法和有你的标签cell.titleLabel.title
和添加与autoResizingMask
(或相似) flexibleWidth
的UITextField
到你的cell.contentView
。
或者其他解决scheme:为iPhone和iPad创build一个自定义单元格,然后加载^^,这样在处理文本字段时也遇到了较小的问题:P如果您需要进一步的帮助或者有疑问,只需评论:)
- 自动布局+ UIScrollView和单个子视图
- iOS Autolayout:在resize的父视图中发布UILabels
- UIView长宽比混淆了systemLayoutSizeFittingSize
- 在使用storybaords时,需要以编程方式调整子视图的大小?
- 自动布局:layoutMarginsGuide
- IOS:调整UIButton的高度取决于标题文本使用Autolayout?
- 解除模态视图控制器后,框架不反映自动布局约束
- UITableViewCell四舍五入错误与NSAutoresizingMaskLayoutConstraint,但大小正确设置在故事板和heightForRowAtIndexPath:
- 具有自动布局的UITableViewCell中的UILabel具有错误的高度