设置文本时停止UITextField调整大小

Gav*_*ard 5 iphone objective-c ios

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

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

谢谢

mat*_*att 13

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

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

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