设置文本时停止UITextFieldresize

我有一个视图设置,其中布置了4个UITextField并设置了约束,以便它在所有设备上看起来很棒并且按预期工作。 我有一个问题,如果我使用TextField.text = @“some long text”设置文本; 或[TextField setText:@“some long text”]; 它会使文本字段扩展其宽度以适应文本的长度,然后由于约束,其他文本字段也会resize。

如何停止文本字段的大小调整? 我想要的是保持相同的字段,用户只需滚动文本如果他们想要到达终点?

谢谢

您只需要更改约束。 为UITextField提供一个显式的内部宽度约束(或使用约束来以其他方式设置或限制其宽度)然后事情将按照您的意愿运行。

请记住,一般而言,视图的大小和位置的所有方面都必须通过其约束明确配置。 但是,现在,您的文本字段没有宽度约束,因此其宽度基于其文本内容(即,它使用内在内容大小来获取其宽度)。 省略Width约束并不违法,这就是为什么Interface Builder在设置约束时没有抱怨的原因 – 但它只是因为存在提供宽度的内在内容大小而合法,因此它确实意味着宽度会改变,如果内部文本发生了变化。 如果那不是您想要的,那么不要这样做 – 改为提供明确的宽度约束。

(类似地,文本字段的隐式高度为30,这就是为什么你不必给它一个高度约束。这个高度不随文本内容改变,因为,与UILabel不同,文本字段不会包装它文字到多行。)