按钮并不像预期的那样完全一样 iOS Autolayout

Posted

技术标签:

【中文标题】按钮并不像预期的那样完全一样 iOS Autolayout【英文标题】:Buttons are not perfectly equally as expected iOS Autolayout 【发布时间】:2018-06-06 16:28:32 【问题描述】:

我正在尝试制作“两个等宽按钮”,正如 Apple 自动布局指南中所述。

https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/AutolayoutPG/ViewswithIntrinsicContentSize.html#//apple_ref/doc/uid/TP40010853-CH13-SW1

在界面生成器 (Main.storyboard) 的预览中看起来还不错。但是当我尝试更改设备时,我发现某些设备上的宽度不同。 我该如何解决?如何使用约束或其他技术使所有设备的按钮宽度相等?

更新示例:

宽度还可以

宽度不对

Width is ok

Width is not ok

【问题讨论】:

请指定您的限制条件 你能用可见的约束更新你的图像吗? 约束大小与自动布局指南中的相同: 1. Short Button.Leading = Superview.LeadingMargin 2.Long Button.Leading = Short Button.Trailing + Standard 3.Long Button.Trailing = Superview。 TrailingMargin 4.Bottom Layout Guide.Top = Short Button.Bottom + 20.0 5.Bottom Layout Guide.Top = Long Button.Botton + 20.0 6.Short Button.Width = Long Button.Width 我更新了截图。如果您尝试相同的示例,是否所有设备的宽度都相同? 【参考方案1】:

按钮的宽度没有问题。由于两个按钮之间有 0.5 点的差异,它可能不会显示相等的宽度。

只需手动检查两个按钮的宽度,它们之间可能没有差异,超过 1 点。

看看这些快照:

iPhone 5

iPhone 8

iPhone X

【讨论】:

是的。如果差异不超过 1 分,是否被视为预期行为?苹果在文档中的某个地方这么说吗?我认为任何不同的大小都是错误的,没有例外。我花了大约一个多星期的时间来尝试在我的项目中解决这个问题。=))) 对于不同设备的 X 和 Y 呢?它们是否具有与宽度相同的规则 - 可接受的差异 @Val - 这可能被认为是 Apple 的错误。 Apple 对此没有具体的规定。我可以向您解释这个问题,因为我遇到了同样的问题并且根本没有解决方案。【参考方案2】:

将您的按钮放在一个UIStackView 水平方向并将distribution 属性设置为FILL EQUALLY

查看tutorial 了解更多示例。

【讨论】:

好的,我会看看这个。但是我从堆栈视图来到了通常的约束,因为在堆栈视图中,尽管按钮的纵横比相同,但我也遇到了同样的问题。宽度略有不同,但无论如何我似乎错了。 使用UIStackView你不需要在你的按钮中设置约束 我最终需要“手动”创建一个UITabBar,并且我总是使用UIStackView 来实现这个目标

以上是关于按钮并不像预期的那样完全一样 iOS Autolayout的主要内容,如果未能解决你的问题,请参考以下文章

Pyspark:spark-submit 不像 CLI 那样工作

UITableViewAutomaticDimension 不像预期的那样工作。迅速

$geoIntersects 不像预期的那样工作

为啥 .imageScale(.large) 不像 iOS 股票应用程序那样大?

Clickhouse:runningAccumulate() 不像我预期的那样工作

glBindAttribLocation 不像预期的那样工作