【问题标题】:Layout static table cell for iPhone and iPad为 iPhone 和 iPad 布局静态表格单元格
【发布时间】:2013-05-13 05:38:46
【问题描述】:

我对 iOS 开发还很陌生,对故事板也很陌生。我正在尝试使用带有静态单元格和“分组”样式的 UITableView 创建一个基本表单。

我希望只制作一个故事板并将其用于 iPhone 和 iPad,不确定是否推荐,但我并没有设计特定于任一设备的元素,所以会有很多如果我为两个设备系列维护一个单独的故事板,则重复。

所以我将标签拖到表格单元格的左侧,将文本输入拖到右侧,然后我使用自动布局并设置一些约束: - 标签有一个领先的空间来superview 30 - TextField 有一个到 superview 的尾随空格 30 - 标签和文本字段之间的水平间距约束 - 修正标签的宽度限制

它在 iPhone 上运行良好,但在 iPad 上,标签和文本字段超出了表格单元格的边缘。这是因为 iPad 在表格单元格的左侧和右侧有更宽的边距(比我使用的 30pt 约束更宽)。

很明显为什么它不起作用。我想我的问题是,这是一种常见的情况,我怀疑有一个简单的解决方案。有兴趣听取建议。有没有办法将标签和文本字段限制在单元格的边缘而不是表格的边缘?如果不是,我应该:

  1. 为 iPhone 和 iPad 复制故事板
  2. 使用 QuickDialog 等表单库
  3. 以编程方式添加和排列标签和文本字段
  4. 还有其他建议吗?

这是显示自动布局约束的屏幕截图:

这就是布局在 iPad 上的行为方式:

【问题讨论】:

    标签: ios uitableview autolayout


    【解决方案1】:

    我更喜欢解决方案 3 ^^ 使用cellForRow:atIndexPath: 方法和cell.titleLabel.title 作为您的标签,并将UITextFieldautoResizingMask(或类似的)flexibleWidth 添加到您的cell.contentView

    或其他解决方案:为 iPhone 和 iPad 创建一个自定义 Cell 并加载此 ^^,这样您在处理文本字段时也会遇到较小的问题:P 如果您需要进一步的帮助或有疑问,请发表评论 :)

    【讨论】:

    • 我现在倾向于这个解决方案,因为我找不到一种超级方便的自动布局方式。谢谢。
    【解决方案2】:

    我也有同样的问题。我通过为每个水平约束创建插座然后根据当前设备是 iPad 还是 iPhone 以编程方式更改常量来解决这个问题。

    头文件:

    @property (weak, nonatomic) IBOutlet NSLayoutConstraint *myLabelHorizontalConstraint;
    

    viewDidLoad 子程序中的方法文件:

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
            myLabelHorizontalConstraint.constant = 60;
    } else myLabelHorizontalConstraint.constant = 30;
    

    如果情节提要场景布局中的约束设置为 30(在我的例子中是 iPhone 设置),则可以省略“else”部分。我只是把它放在上面是为了展示一个完整的例子。

    我希望有一个更通用的解决方案,例如故事板中某处的设置或单个调整大小命令。似乎 iPad 静态单元组布局比 iPhone 多缩进 30 点,但在自动布局中并没有弥补这一点。也许我在某处遗漏了什么。

    【讨论】:

    • 我认为这个解决方案解决了具体问题。感谢斯科特的提示。在较长的表单上设置网点可能会有点乏味,但在这种情况下,程序化布局可能是最好的。
    猜你喜欢
    • 1970-01-01
    • 2023-03-21
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多