我问的问题纯粹是使用自动布局,我不想根据文字宽度手动设置框架。
我知道更改内容拥抱优先级,我使用相同的标签和一个按钮,它适用于标签但不适用于按钮,任何人都可以帮助
答案 0 :(得分:0)
如果你想这样做,你可以创建自定义视图:Take - UIView
并将其更改为UIButton
并添加UILabel
并应用所有必需的限制。
通过这一切设置,您可以实现所需的UI。
请试试这个如果你想这样实现。
答案 1 :(得分:0)
UILabel
对象的宽度约束应该小于
或平等关系UIButton
对象的宽度约束应该是更大的
比或平等关系UILabel
对象的水平内容拥抱优先级
应该是249(根据我上面显示的约束设置)UILabel
宽度常量值设置为最大可能值作为您的要求。 相关代码为:
[buttonObject setTitle:@"Button title is ..." forState:UIControlStateNormal];
[buttonObject sizeToFit];
答案 2 :(得分:0)
该按钮已设置其“内在宽度”以适合其标题。
如果没有其他约束覆盖该内在内容宽度,则该按钮将是该内在宽度,这是您想要的。演示:
这是我的故事板大纲:
我将水平堆栈视图的对齐设置为“左”(而不是“填充”),因此它不会拉伸顶行来填充屏幕宽度。
如果您的按钮在其固有宽度不,则您具有更高优先级(可能是优先级1000)约束,将其强制为其他宽度。
您可以尝试通过将其内容拥抱优先级及其内容压缩阻抗优先级设置为1000来强制它始终保持其内在内容宽度。
如果将两个优先级都设置为1000,并且您有任何其他必需的约束来阻止该按钮成为其固有大小,您将在运行时在调试日志中收到错误消息,告知您存在冲突(不可满足)约束。这些消息将包含完整的约束集,因此您可以尝试跟踪您不希望的约束条件。
答案 3 :(得分:-1)
如果您想根据标签文字更改按钮宽度,
1.不修复标签宽度
2.现在,依靠标签宽度上的按钮宽度,即等宽。