【发布时间】:2015-01-19 20:42:00
【问题描述】:
我正在尝试在视图中水平对齐两到三个按钮。为简单起见,我将展示对齐两个按钮的尝试。
这适用于具有短标题的按钮:
@"H:|-10-[questionButton1(questionButton2)]-5-[questionButton2]-10-|"
但是一旦其中一个按钮的标题变长了,它就会像这样中断:
我最终做的是计算每个按钮的宽度,然后如果 button1 的宽度大于视图的一半并且大于 button2 的宽度,我就使用了:
@"H:|-10-[questionButton1(==btn1width)]-5-[questionButton2(>=btn2width)]-10-|"
它有点工作,但我不太喜欢这种计算的代码外观。想象一下它通过第三个按钮增加的复杂性。此外,如果两个按钮的标题都很长,就会出现问题,在这种情况下,我必须弄清楚是否应该减小字体大小以使所有内容都适合。
我在这里发布这个是因为我今天才开始在代码中使用它,因此我可能会遗漏一些关于自动布局的神奇之处。任何形式的帮助将不胜感激。
--- 更新(澄清)---
考虑到边距(外部 10 个和按钮之间的 5 个),我希望按钮均匀分布。理想情况下,如果文本大小适合其默认大小(两个按钮为 50%:50%,三个按钮为 33%:33%:33%),则它们的宽度应该相同。如果按钮标题超过完美宽度,如果其他按钮允许(如果其他按钮可以缩小),则按钮应扩展其宽度。如果没有扩展或缩小可能,大按钮应减小字体大小并重复该过程(检查其他按钮是否可以缩小)。是的,我知道,我要求很多:)
--- 更新 ---
@Sikhapol 的回答帮助我解决了这个问题。我添加了一些东西来减小字体大小、添加填充和使按钮标题在文本不适合时分成多行:
btn.contentEdgeInsets = UIEdgeInsetsMake(0, 5, 0, 5);
btn.titleLabel.adjustsFontSizeToFitWidth = YES;
btn.titleLabel.numberOfLines = 0;
btn.titleLabel.minimumScaleFactor = 0.7;
最终结果:
【问题讨论】:
-
不清楚您希望按钮的外观。您是否希望它们每个都有足够的宽度来显示它们的标题,但仍扩展到视图的宽度(减去 10-5-10 填充)?您是否希望它们都具有相同的宽度,但在必要时减小字体大小(我很确定在不计算标题大小的情况下无法以任何简单的方式做到这一点)?
标签: ios autolayout nslayoutconstraint