【问题标题】:Auto Layout "Add New Constraints" not interactive in Interface Builder自动布局“添加新约束”在 Interface Builder 中不交互
【发布时间】:2013-09-28 14:27:27
【问题描述】:

我正在为 iOS 7 更新应用程序并决定使用自动布局。

当我尝试为以下屏幕截图中的任何元素添加约束时:

View ControllerTable ViewViewTable View SectionTable View CellContent ViewLabel

我无法这样做,因为Add New Constraints 面板中的no item(如下所示)是交互式的。 (除了Update Frames项)

在我试图解决这个问题的过程中,我研究了这一点

“当使用 Auto Layout 时,您可能不再直接设置视图的框架。这条线要么没有效果,要么可能直接干扰 Auto Layout 正在执行的操作。”

还有

“当使用 Auto Layout 设置滚动视图的 contentSize 时,内容大小会自动从您在其子视图上设置的约束中派生。”

当我更新 ViewContoller 代码以适应此建议时,问题仍然存在。

【问题讨论】:

  • 我认为你不能为 View Controller 设置约束。您只能为 UIView、UITableView 或视图控制器中的某些其他项目设置约束。但是您的图像显示您选择了视图控制器并尝试对其设置约束。
  • @Priyatham51,为了清楚起见,我更新了问题。第一个屏幕截图中的任何元素都是这种情况。
  • 好的,尝试在情节提要上选择您的 TableView,当您打开添加约束时,在“添加新约束”正下方的框中输入一些值。我在添加约束时观察到的是,它在开始时将处于非活动状态。但是当您在框中输入一些值时,“添加约束”按钮将被启用。
  • 我强烈建议您阅读developer.apple.com/library/ios/documentation/UserExperience/… 上的苹果自动布局指南。它非常紧张,会引导您完成“魔法”,以便在您需要时出现。
  • @Priyatham51,为了清楚起见,再次更新了问题。面板中的任何项目都不是交互式的,即我不能“在框中输入一些值”,因为框不是交互式的

标签: objective-c xcode ios7 autolayout


【解决方案1】:

大小检查器中可能会设置 Autoresizing Mask 作为布局。 尝试将其切换到约束:

【讨论】:

    【解决方案2】:

    我遇到了类似的问题。一旦我将表格视图单元格样式切换为自定义,我就能够为表格视图单元格 - 内容视图(例如 UILabel、UIImageView)上的项目添加约束。

    如果我在默认的表格视图单元格类型(例如字幕)上添加图像或 UILabel,我可以将它们定位在内容视图上,但不能对它们设置约束。

    更改为自定义表格视图单元格样式是我的解决方案。

    【讨论】:

    • 如果您的 UICollectionViewCell 有一个 ContentView 则不起作用(您可以在 UI Builder 中选择框,它将 contentView 添加到您的视图堆栈,在单元格父级下方。但是一旦您拿走了 contentView,整个列表其他问题开始发生。这一切都非常违反直觉,Apple 应该解决它。
    【解决方案3】:

    要设置约束,您需要选择项目,然后使用约束菜单或 ctrl+drag 设置约束。

    但是,没有办法为 tableViewController 设置约束,因为它已经完全设置好了。

    【讨论】:

    • 所以根本没有办法给tableViewController添加约束?我一直在寻找这个答案好几个小时了,哈哈
    猜你喜欢
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    • 2013-09-29
    • 2015-08-12
    • 2015-12-17
    相关资源
    最近更新 更多