如何控制视图的相对位置,特别是我希望我的应用程序在 3.5 英寸显示屏和 4 英寸显示屏上无缝运行?
4 回答
从 iOS 9 开始,您可以使用UIStackView
,其工作方式非常类似于LinearLayout
:您添加视图,堆栈视图根据您的大小调整选项根据需要排列它们 – 如果您使用的是 Interface Builder,您可以尝试每个选项以查看哪个选项适合您的需求。您还可以在堆栈视图中设置视图之间的间距,添加一些填充。
警告:在代码中添加堆栈视图子视图时,您应该始终addArrangedSubview()
像这样使用:
stackView.addArrangedSubview(someView)
如果您尝试使用普通旧的addSubview()
,它将无法正常工作,因为堆栈视图不知道如何安排它。
至于删除,你需要小心使用stackView.removeArrangedSubview(someView)
, someView.removeFromSuperview()
否则视图将无法正确删除。
你可能会发现我的UIStackView 教程很有用。
没有等效或相对和线性布局。UI 元素具有自动调整大小的掩码,这些掩码定义了在调整超级视图大小(例如屏幕旋转)时如何移动/拉伸它们。如果您打算为 iOS 6+ 构建应用程序,还可以使用布局约束进行定位。如果使用这些工具无法解决重新定位问题,则应更改代码中 UI 元素的框架。
看看这个:iOS 6 应用程序 - 如何处理 iPhone 5 的屏幕尺寸?以及如何在 Xcode 中为 iOS 应用程序添加 iPhone 5 大屏幕支持?
但它在很大程度上是通过自动布局为您完成的。在 Xcode 中单击您的项目,然后转到“摘要”选项卡,为您的应用添加不同屏幕尺寸的启动屏幕。
自动布局系统 ≫ 相对布局
UIStackView ≈ 线性布局
国际海事组织。UIStackView 设计得不好
- 不能轻易在 subviews/subview 和 superview 之间添加额外的约束
经常会产生约束冲突
X。仅限 iOS 9+
所以我写了 AutoLinearLayoutView,一个 UIStackView 的替代品。
从 Github AutoLinearLayoutView结帐