Android RelativeLayout/LinearLayout的iOS等价物是什么?

Android RelativeLayout/LinearLayout的iOS等价物是什么?,android,ios,android-layout,android-relativelayout,Android,Ios,Android Layout,Android Relativelayout,我如何控制视图的相对位置,尤其是我希望我的应用程序能够无缝地在3.5英寸和4英寸显示器上运行?请查看以下内容:和 但大部分情况下都是通过自动布局完成的。在Xcode中单击您的项目并转到摘要选项卡,为您的应用程序添加不同屏幕大小的启动屏幕。没有等效或相对和线性布局。UI元素具有自动调整大小的遮罩,该遮罩定义在调整superview的大小(例如屏幕旋转)时如何移动/拉伸它们。如果您打算为iOS 6+构建应用程序,还可以使用布局约束进行定位。如果无法使用这些工具解决重新定位问题,则应更改代码中UI元素

我如何控制视图的相对位置,尤其是我希望我的应用程序能够无缝地在3.5英寸和4英寸显示器上运行?

请查看以下内容:和


但大部分情况下都是通过自动布局完成的。在Xcode中单击您的项目并转到摘要选项卡,为您的应用程序添加不同屏幕大小的启动屏幕。

没有等效或相对和线性布局。UI元素具有自动调整大小的遮罩,该遮罩定义在调整superview的大小(例如屏幕旋转)时如何移动/拉伸它们。如果您打算为iOS 6+构建应用程序,还可以使用布局约束进行定位。如果无法使用这些工具解决重新定位问题,则应更改代码中UI元素的框架

从iOS 9开始,您可以使用
UIStackView
,它的工作原理与
LinearLayout
非常相似:您可以添加视图,堆栈视图根据需要根据您的大小调整选项来排列视图–如果您使用的是Interface Builder,您可以对每个选项进行实验,以查看哪个选项适合您的需要。还可以在堆栈视图中设置视图之间的间距,添加一些填充

警告:在代码中添加堆栈视图子视图时,应始终使用
addArrangedSubview()
如下所示:

stackView.addArrangedSubview(someView)
如果尝试使用普通的old
addSubview()
它将无法正常工作,因为堆栈视图不知道如何排列它

至于删除,您需要小心使用
stackView.removeArrangedSubview(someView)
someView.removeFromSuperview()
,否则无法正确删除视图


您可能会发现我的系统很有用。

自动布局系统≫ 相对论

乌斯塔克视图≈ 线性布局

IMO.UIStackView设计得不好

  • 无法在子视图/子视图和超级视图之间轻松添加额外约束
  • 经常会产生约束冲突

    十,。仅限iOS 9+

  • 所以我写了AutoLinearLayoutView,它是UIStackView的替代品

    从Github签出