Swift UITextField调整大小

时间:2015-01-23 20:58:45

标签: ios swift uitextfield

我想为iPhone 5,6,6 +制作一个应用程序。因此,每个元素都必须调整它。我无法调整UITextField的大小。

我找到的唯一方法是致电self.view.addSubview()。如果我想让UITextField更大,但不是更小,它就有效。如何更改当前UITextField

你能提出一些建议吗?

1 个答案:

答案 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附带的主视图一样

希望有所帮助。