在没有界面构建的情况下创建完整的用户界面应遵循哪些指导原则?
我刚开始自学创建Android应用程序。我坚持通过 XML文件创建用户界面的方法,而不是Visual UI Builder。
现在我想了解如何通过代码构建用户界面。我不想使用故事板或 XIB文件。
阅读教程和其他材料。我想到了以下
以编程方式插入小部件
- Create a frame using CGRectMake
- Create the elements / Widget and mention its frame
- Insert a widget via view.addSubView: widget
这是我在没有构建器的情况下创建用户界面的唯一方法吗?在创建视图时我应该遵循哪些指导原则?
答案 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%。