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

时间:2013-09-04 19:36:06

标签: android ios android-layout relativelayout

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

4 个答案:

答案 0 :(得分:4)

从iOS 9开始,您可以使用UIStackView,它与LinearLayout的工作方式非常相似:您可以添加视图,并根据您的大小调整选项根据需要排列堆栈视图 - 如果您使用的是界面您可以在构建器中试验每个选项,以查看哪个选项适合您的需求。您还可以在堆栈视图中设置视图之间的间距,添加一些填充。

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

stackView.addArrangedSubview(someView)

如果您尝试使用普通的旧addSubview(),它将无法正常工作,因为堆栈视图无法安排它。

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

您可能会发现我的UIStackView tutorial有用。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

请查看以下内容:iOS 6 apps - how to deal with iPhone 5 screen size?How to add iPhone 5 large screen support to iOS apps in Xcode?

但是在大​​多数情况下,它都是通过自动布局完成的。在Xcode中单击您的项目,然后转到摘要选项卡,为您的应用添加不同的屏幕尺寸启动屏幕。

答案 3 :(得分:0)

自动布局系统»RelativeLayout

UIStackView≈LinearLayout

IMO。 UIStackView设计不合理

  1. 无法在子视图/子视图和superview
  2. 之间轻松添加额外约束
  3. 经常产生约束冲突

    X。仅限iOS 9+

  4. 所以我编写了AutoLinearLayoutView,它取代了UIStackView。

    Demo screenshot

    从Github结帐AutoLinearLayoutView