gpt4 book ai didi

ios - UILabel 的宽度超过使用编程的自动布局的文本

转载 作者:可可西里 更新时间:2023-11-01 00:42:17 27 4
gpt4 key购买 nike

所以我有两个 UIView,一个 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 右对齐到父 View (self)。电子邮件左对齐。然后他们之间就有了审美上的差距。

问题是这样的:

如果我先设置 emailLabel22,那么它的宽度会变大,输入字段会被挤压到屏幕的右侧,它们之间有很多空白。 Like so.

如果我首先设置输入字段,如上面的代码所示,然后我将电子邮件压缩到其锁定宽度,在本例中为 73。这意味着任何不适合 73pt 宽度的文本都将被截断带省略号。 Like So

如果我取消对电子邮件宽度的锁定,如果我输入的文字不适合文本字段,输入字段的大小就会扩大。 Like So

这真的不是问题,但我正在尝试构建一个强大的标签/文本字段组合,我可以将任何文本设置到它并使其完美匹配,所以我不想必须“锁定电子邮件标签的“向下宽度”。我希望它尽可能向右扩展,但在文本大小范围内。我也不希望 inputField 压扁电子邮件标签。我也不想缩小电子邮件的字体大小,输入缩小就可以了。

我已经尝试修复此问题 3 个小时了。我不知道该怎么做。

谢谢。

最佳答案

尝试在您的 UILabel 和 UITextField 上设置拥抱和压缩阻力优先级

enter image description here

关于ios - UILabel 的宽度超过使用编程的自动布局的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42323723/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com