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



我有一个视图设置,其中有4个UITextFields布局和约束设置,因此它在所有设备上都很好看,并且可以按预期工作。我有一个问题,如果我使用TextField.text=@"some long text"设置文本;或[TextField setText:@"some long text"];它会使文本字段扩展其宽度以适应文本的长度,然后由于限制,其他文本字段也会调整大小。

如何停止调整文本字段的大小?我希望字段保持不变,用户可以滚动文本。如果他们想滚动到最后?

感谢

您只需要更改约束即可。给UITextField一个显式的内部宽度约束(或者使用约束以其他方式设置或限制其宽度),然后事情就会按照您的意愿进行。

请记住,通常情况下,视图大小和位置的所有方面都必须由其约束明确配置。但是,现在,您的文本字段有宽度约束,因此其宽度基于其文本内容(也就是说,它使用内部内容大小来获得其宽度)。省略"宽度"约束并不违法,这就是为什么界面生成器在设置约束时没有抱怨的原因,但这是合法的,因为存在提供宽度的内部内容大小,因此这确实意味着如果内部文本发生变化,宽度也会发生变化。如果这不是你想要的,那么不要这样做——而是提供一个显式的宽度约束。

(同样,文本字段的隐含高度为30,这就是为什么您不必给它一个height约束。这个高度不会随文本内容而改变,因为与UILabel不同,文本字段不会将其文本换行。)

最新更新