【发布时间】:2017-12-31 09:07:28
【问题描述】:
我问的问题纯粹是使用自动布局,我不想根据文本宽度手动设置框架。
我知道更改内容拥抱优先级,我对一个标签和一个按钮使用了相同的标签,但对按钮无效,谁能帮忙
【问题讨论】:
标签: ios iphone autolayout storyboard nslayoutconstraint
我问的问题纯粹是使用自动布局,我不想根据文本宽度手动设置框架。
我知道更改内容拥抱优先级,我对一个标签和一个按钮使用了相同的标签,但对按钮无效,谁能帮忙
【问题讨论】:
标签: ios iphone autolayout storyboard nslayoutconstraint
按钮已经设置了它的“内在内容宽度”以适应它的标题。
如果没有其他约束覆盖该固有内容宽度,则按钮将是该固有宽度,这就是您想要的。演示:
这是我的故事板大纲:
我将水平堆栈视图的对齐方式设置为“左”(而不是“填充”),这样它就不会拉伸顶行来填充屏幕宽度。
如果您的按钮在其固有宽度上不是,则您有更高优先级(可能是优先级 1000)的约束将其强制为其他宽度。
您可以尝试通过将其 Content Hugging Priority 和 Content Compression Resistance Priority 都设置为 1000 来强制它始终保持其固有内容宽度。
如果您将两个优先级都设置为 1000,并且您有任何其他必需的约束阻止按钮成为其固有大小,您将在运行时在调试日志中收到错误消息,告诉您存在冲突(无法满足)的约束。这些消息将包含完整的约束集,因此您可以尝试找出您不想要的约束。
【讨论】:
如果您想这样做,您可以创建自定义视图:Take - UIView 并将其类更改为 UIButton 并添加 UILabel 并应用所有必需的约束。
通过这一切设置,您可以实现所需的 UI。
如果你想这样实现,请试试这个。
【讨论】: