我想为iPhone 5,6,6 +制作一个应用程序。因此,每个元素都必须调整它。我无法调整UITextField
的大小。
我找到的唯一方法是致电self.view.addSubview()
。如果我想让UITextField
更大,但不是更小,它就有效。如何更改当前UITextField
?
你能提出一些建议吗?
答案 0 :(得分:0)
您想使用Auto Layout,可能还需Auto Layout’s Visual Format Language。
为了将来的证据,您可能也想使用Size Classes,但我会对此有所了解。
我将包含一个如何以编程方式执行此操作的示例,例如UILabel,因为编码部分似乎比Interface Builder更多地绊倒了人们。如果您想要走这条路线,可以使用Google Interface Builder自动布局教程。
自动布局使用NSLayoutConstraints来描述一个视图相对于另一个视图的布局方式。您可以创建这些约束并将它们添加到“父”视图(包含其他视图的包含视图)。视图控制器有一个名为“view”的默认视图,您可能会添加大部分内容,因此我们只需添加约束即可。可视格式语言的输入略少,而且更直观,所以我会用它做一个例子,但如果遇到无法做到的事情,你可以查看如何在没有Visual Format Language的情况下创建约束。 / p>
以下是使用Auto Layout的可视化格式语言,宽度为100,高度为50的UILabel示例:
override func viewDidLoad() {
super.viewDidLoad()
// First add the label to the parent view
let label = UILabel()
label.setTranslatesAutoresizingMaskIntoConstraints(false) // Not needed when using Auto LayoutS
label.text = “Test Label”
label.sizeToFit() // We didn’t pass a frame/rect to UILabel() so this gives it an intrinsic size
view.addSubview(label)
// Create an NSLayoutConstraint for the width and add it to the parent view
let labelWidthConstraint: NSArray = NSLayoutConstraint.constraintsWithVisualFormat("H:[label(100)]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary) // This uses Auto Layout’s Visual Format Language, which is what the H:[label(100)] part is, and is a *little* simpler than creating constraints normally.
view.addConstraints(labelWidthConstraint)
// Create an NSLayoutConstraint for the height and add it to the parent view
let labelHeightConstraint: NSArray = NSLayoutConstraint.constraintsWithVisualFormat("V:[label(50)]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary)
view.addConstraints(labelHeightConstraint)
}
注意:您需要在您创建的视图上调用setTranslatesAutoresizingMaskIntoConstraints(false),以便它们使用自动布局,但不要在“父”视图上调用它,就像View Controller附带的主视图一样
希望有所帮助。