我有一个视图设置,其中布置了4个UITextField并设置了约束,以便它在所有设备上看起来很棒并且按预期工作。我有一个问题,如果我使用TextField.text = @“some long text”设置文本;或[TextField setText:@“some long text”];它会使textfield扩展其宽度以适应文本的长度,然后由于约束,其他文本字段也会调整大小。
如何停止文本字段调整大小?我想要的是保持相同的字段,用户只需滚动文本如果他们想要到达终点?
由于
答案 0 :(得分:11)
您只需要更改约束。为UITextField提供一个显式的内部宽度约束(或使用约束来以其他方式设置或限制其宽度),然后事情就会按照您的意愿运行。
请注意,一般来说,视图的大小和位置的所有方面必须由其约束明确配置。但是,现在,您的文本字段具有 no 宽度约束,因此其宽度基于其文本内容(即,它使用内在内容大小来获取其宽度)。省略Width约束并不违法,这就是为什么Interface Builder在设置约束时没有抱怨的原因 - 但这只是因为有一个内在的内容大小提供了一个宽度,因此它确实意味着宽度会改变,如果内部文本发生了变化。如果那不是您想要的,那么请不要这样做 - 改为提供明确的宽度约束。
(类似地,文本字段的隐含高度为30,这就是为什么你不必给它一个高度约束。这个高度不随文本内容改变,因为,不像UILabel,文本字段不会将其文本包装到多行。)