【问题标题】:iOS auto layout : button.constraints does not return all constrainsiOS 自动布局:button.constraints 不返回所有约束
【发布时间】:2014-02-22 06:38:10
【问题描述】:

我在按钮上设置了以下约束。

当我记录按钮的约束如下:

NSLog(@"Button constraints : %@", self.button.constraints);

它只返回高度和宽度限制。

(
"<NSLayoutConstraint:0xb784e20 H:[UIRoundedRectButton:0xb785500(34)]>",
"<NSLayoutConstraint:0xb784f50 V:[UIRoundedRectButton:0xb785500(29)]>"
)

知道为什么会这样吗?

更新: 执行po [[UIWindow keyWindow] _autolayoutTrace] 显示如下图所示。

【问题讨论】:

    标签: ios objective-c ios7 xcode5 autolayout


    【解决方案1】:

    我认为其他约束在超级视图上,而不是按钮上。

    您可以通过设置调试点并在调试器中输入来打印出所有约束。

    po [[UIWindow keyWindow] _autolayoutTrace]
    

    【讨论】:

    • 它不显示约束。我已经更新了我的问题以显示它显示的内容。顺便说一句,对于某些视图,它说AMBIGUOUS LAYOUT,而在情节提要和日志中,它都暗示布局不明确。
    • 只需记录您的超级视图约束
    • @Retro 即使self.view.constraints对按钮也没有任何约束。
    • 您可以在不明确的布局控件上调用constraintsAffectingLayoutForAxis。像po [0xb8655d0 constraintsAffectingLayoutForAxis:0] 0 表示水平,1 表示垂直以帮助您调试。我不认为日志中存在模棱两可的布局,我不使用情节提要,所以我不能说。
    • 很高兴了解这种新的调试方法。顺便说一句,调用此方法会返回轴 1 的宽度约束和轴 0 的高度约束。我在这些约束中没有发现任何问题,因为按钮的大小始终是固定的并且永远不会改变。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 2013-08-23
    • 2014-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多