在以编程方式使用自动布局和视觉格式时,我对给定两个谓词时如何做出决定感到困惑。例如,以下约束:
"H:[myTextView(>=300,<=700)]"
到目前为止,在我尝试的每台设备上,无论是 iPhone 5S、6 还是 iPad,宽度始终为 300。 什么情况下宽度会大于300?此外,iOS 7 是我使用 Swift 部署此应用程序的目标。
基本上,我希望我的 View 在 iPhone 上占满屏幕的大部分宽度,但在 iPad 上占一半多一点。
我的解决方案
基于 rdelmar 的回答。
self.view.addConstraint(NSLayoutConstraint(
item:self.infoTextView, attribute:.Width,
relatedBy:.Equal, toItem:self.view,
attribute:.Width, multiplier:0.23, constant:228))
最佳答案
您不能以这种方式使用 >= 和 <= 约束,因为当您计算该表达式时,两者之间的任何值都会满足它,因此系统通常只会选择一个或另一个。在 iOS 8 中,你可以使用 size classes 对不同尺寸的屏幕给予不同的约束。
如果您正在为 iOS 7 编程,您需要检查您使用的是哪个设备,并相应地设置约束,或者使宽度相对于 View 的宽度。我认为您必须使用其他约束方法 constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:,尽管这样做。通过使用乘数和常量,您可以制作 View ,例如在 iPhone 上为 300 宽,但在 iPad 上为 400(对于 320 点宽的手机和 768 点宽的 iPad,乘数为 0.223,常数为 228 ).
关于ios - 视觉格式自动布局中的灵活大小元素如何决定使用哪个谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26245262/