所以我有两个 UIView,一个 UILabel
和一个 UITextField
,第一个是字段的标题,第二个是输入信息的位置..这就是我设置自动布局约束的方式:
对于输入字段:
//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 与 super View (self
) 右对齐。电子邮件左对齐。那么他们之间在审美上就有了差距。
这就是问题:
如果我首先设置emailLabel22
,那么它的宽度会变得很大,并且输入字段会被挤压到屏幕的右侧,并且它们之间有很多空白空间。 Like so.
如果我首先设置输入字段,如上面的代码所示,然后我会将电子邮件压缩到其锁定的宽度,在本例中为 73。这意味着任何不适合 73pt 宽度的文本都会被截断带省略号。 Like So
如果我取消对电子邮件宽度的锁定,则当我输入不适合文本字段的单词时,输入字段的大小会扩大。 Like So
这并不是真正的问题,但我正在尝试构建一个强大的标签/文本字段组合,我可以将任何文本设置为并使其完美适合,所以我不想必须“锁定”沿着电子邮件标签的宽度”。我希望它能够向右扩展,但要在文本大小之内。我也不希望 inputField 压扁电子邮件标签。我也不想压缩电子邮件的字体大小,压缩输入就可以了。
我已经尝试解决这个问题 3 个小时了。我不知道该怎么做。
谢谢。
最佳答案
关于ios - UILabel 的宽度超过使用编程自动布局的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42323723/