有关如何在iOS中创建编码用户界面的说明

时间:2015-07-02 18:27:03

标签: ios storyboard interface-builder

在没有界面构建的情况下创建完整的用户界面应遵循哪些指导原则?

我刚开始自学创建Android应用程序。我坚持通过 XML文件创建用户界面的方法,而不是Visual UI Builder。

现在我想了解如何通过代码构建用户界面。我不想使用故事板 XIB文件

阅读教程和其他材料。我想到了以下

  • 使用布局.xml文件
  • ,人们无法构建用户界面,就像Android一样。
  • XIB和Storyboard是创建用户界面的首选方法。故事板可能是未来的主要工具。

以编程方式插入小部件

- Create a frame using CGRectMake
- Create the elements / Widget and mention its frame
- Insert a widget via view.addSubView: widget

这是我在没有构建器的情况下创建用户界面的唯一方法吗?在创建视图时我应该遵循哪些指导原则?

2 个答案:

答案 0 :(得分:2)

XIB和Storyboards [在Xcode中使用InterfaceBuilder创建]是在iOS中创建视图的GUI方式。在我看来,你应该探索这些。你可以用更少的代码做更多事情。您可以在创建复杂UI时以编程方式添加/删除视图。

但是,如果您仍然希望以编程方式对视图进行编码,那么有很多资源...我很快就设法得到了以下内容 http://matthewmorey.com/creating-uiviews-programmatically-with-auto-layout/

不建议再使用带有CGRect的硬框架作为您的视图.. Autolayout是要走的路..

答案 1 :(得分:1)

你读过的信息可能不是最新的;创建视图在语法上并不像在Android上那样紧凑,但是使用Apple的约束系统比计算自己的框架要好得多。

您想要添加的主要内容是NSLayoutConstraint。它的视觉格式起初看起来有点傻,你必须做一些手工工作来反射,但是 - 你可能会使用Swift,而不是Objective-C,因为它更接近Java - 你可能会说:

let blueButton = UIButton()
button.setTitle(...whatever...)
button.tintColor = UIColor.blueColor()
self.view.addSubview(blueButton)

let redButton = UIButton()
// etc, as above

// a dictionary of views to representative names; this is what
// I mean by you doing the work for reflectivity, i.e. associating
// names with things
let views = [ "red" : redButton, "blue" : blueButton]
self.view.addConstraints(
   NSLayoutConstraint.constraintsWithVisualFormat("|-[red]-[blue]-|" 
                        options:NSLayoutFormatOptions(0) metrics:nil views:views))

|引用了self.view主要内容区域之外的内容,-代表正常的内容,[red][blue]代表“我在views字典中称为“红色”和“蓝色”。添加约束后,UIKit将确保自动满足它们,包括在视图调整大小期间。尝试一个具有纵向和横向方向的快速演示应用程序,并为您的设备提供旋转,以便在实践中看到它。

您可以在视觉约束格式中添加许多其他内容 - 垂直约束,固定,最小和最大尺寸等等 - 您可以通过编程方式创建更多内容,例如:视图必须至少比其他视图大33%。