所以我有两个UIViews,一个UILabel
和一个UITextField
,第一个是字段的标题,第二个是输入信息的地方..这就是我设置的方式他们的AutoLayout约束:
输入字段:
//Constraints:
inputField.translatesAutoresizingMaskIntoConstraints = false;
//Setting trailing = superview(which is called self)'s trailing +2.0
NSLayoutConstraint(item: inputField,
attribute: .trailing, relatedBy: .equal,
toItem: self, attribute: .trailingMargin,
multiplier: 1.0, constant: 2.0).isActive = true;
//Set Top = superview(which is called self) top -2.0
NSLayoutConstraint(item: inputField,
attribute: .top, relatedBy: .equal,
toItem: self, attribute: .topMargin,
multiplier: 1.0, constant: -2.0).isActive = true;
//Setting the height = 30
NSLayoutConstraint(item: inputField, attribute: .height,
relatedBy: .equal,
toItem: nil, attribute: .notAnAttribute,
multiplier: 1.0, constant: 30).isActive = true;
然后为UILabel(称为emailLabel22
):
//Constraints:
// Left
NSLayoutConstraint(item: emailLabel22,
attribute: .leading, relatedBy: .equal,
toItem: self, attribute: .leadingMargin,
multiplier: 1.0, constant: 2.0).isActive = true;
// Buffer Right
NSLayoutConstraint(item: emailLabel22,
attribute: .trailing, relatedBy: .equal,
toItem: inputField, attribute: .leading,
multiplier: 1.0, constant: -8.0).isActive = true;
// Align Tops
NSLayoutConstraint(item: emailLabel22,
attribute: .top, relatedBy: .equal,
toItem: inputField, attribute: .top,
multiplier: 1.0, constant: 0).isActive = true;
// Height
NSLayoutConstraint(item: emailLabel22,
attribute: .height, relatedBy: .equal,
toItem: nil, attribute: .notAnAttribute,
multiplier: 1.0, constant: 30).isActive = true;
// Buffer Right -- **For Input Field**
NSLayoutConstraint(item: inputField,
attribute: .leading, relatedBy: .equal,
toItem: emailLabel22, attribute: .trailing,
multiplier: 1.0, constant: 8.0).isActive = true;
// Locking in Width??? (Should I use this?)
NSLayoutConstraint(item: emailLabel22,
attribute: .width, relatedBy: .equal,
toItem: nil, attribute: .notAnAttribute,
multiplier: 1.0, constant: emailLabel22.frame.size.width);
上面代码的要点是:inputField与superview(self
)右对齐。电子邮件左对齐。然后,他们之间存在着美学上的差距。
这就是问题:
如果我首先设置emailLabel22
,那么它的宽度变得很大,输入字段被压缩到屏幕的右侧,它们之间有很多空的空间。 Like so.
如果我首先设置输入字段,如上面的代码,我然后将电子邮件压缩到其锁定的宽度,在这种情况下是73.这意味着任何不适合73pt宽度的文本被截断用省略号。 Like So
如果我删除电子邮件宽度上的锁定,如果我输入的文字不适合文本字段,则inputField的大小会扩大。 Like So
这不会是一个问题,但我正在尝试构建一个强大的标签/文本字段组合,我可以设置任何文本并使其完美适合,所以我不想要“锁定向下“电子邮件标签的宽度”。我希望它扩展到它想要的权利,但在文本大小内。我也不希望inputField压缩电子邮件标签。我也不想压缩电子邮件的字体大小,输入压缩就好了。
我一直试图解决这个问题3个小时。我不知道怎么做。
感谢。