当我的UITextField成为第一响应者(在编辑时)时,文本会略微向下移动,并且字符之间的间距会略微增加。在辞职第一响应者(键盘消失)后,角色移回原始位置。起初我认为这是一个字体问题,因为我使用自定义字体,但当我使用系统字体或其他自定义字体时会发生同样的事情。
请查看下面的图片。第一个是键盘向下,第二个是键盘向上。可能很难看出,因为方差很小,但键盘向上状态显示字符向下移动并稍微分开。
答案 0 :(得分:4)
在xib中,将textfield的borderStyle设置为TextBorderStyleNone以外的任何值。在代码中,将textfield的borderStyle显式设置为TextBorderStyleNone。
我无法找出原因,但它似乎是初始化程序错误。它在其他代码中工作正常,它不会通过xib的插座初始化UITextField。
在xib中将textfield的borderStyle设置为TextBorderStyleNone时,即使在代码中将borderStyle设置为TextBorderStyleNone,问题仍然存在。接下来可能会出现某种“布局如何”的问题。由价值变化引发的东西。
答案 1 :(得分:3)
选择“adjust to fit”属性可在UITextField中设置属性adjustsFontSizeToWidth。
具有此属性(UITextField Apple Documentation):
通常,文本字段的内容是使用您在font属性中指定的字体绘制的。但是,如果此属性设置为YES, 并且text属性中的内容超出了文本字段的边界 矩形,接收器开始减小字体大小,直到字符串 适合或达到最小字体大小。文字缩小了 基线。
此属性的默认值为NO。如果将其更改为YES, 您还应该通过修改来设置适当的最小字体大小 minimumFontSize属性。
我会先尝试取消选中此项并查看是否会阻止它,然后按照文档建议操作,否则将minimumFontSize属性设置为低,这可能也会导致问题。
此问题可能是蓝色“正在编辑”光标出现的结果。文本的基线(reference)是文本的底部。你的文字通过向下推“沿着基线”缩小,这在最小的方向上倾向于最小化.FizeSize / adjustsFontSizeToWidth问题。
答案 2 :(得分:3)
如果你强行制作UITextField第一响应者,请在viewDidAppear中执行:而不是viewDidLoad ...这解决了我的问题......
答案 3 :(得分:2)
检查关闭"剪切到界限"我的故事板中的textField对我来说很好。
答案 4 :(得分:1)
将Min Font Size
属性设置为Interface Builder
中为我工作的字体大小
答案 5 :(得分:0)
你的UITextField大小可能在高度方面略微过小。尝试手动调整大小,使其高一个像素或两个像素。或者在XIB编辑器中选择它并使用“编辑器”菜单中的“大小以适合内容”。应该将文本字段设置为正确的大小,以便不会发生文本转换。
答案 6 :(得分:0)
您应该在Text属性之前设置Font属性。
答案 7 :(得分:0)
答案 8 :(得分:0)
我的问题与alignment
中的错误UIStackView
有关。
将UITextField
放入UIStackView
时,请确保正确设置其alignment
,否则自动布局不会弄清楚如何正确放置视图。
就我而言,我必须将其设置为.leading
。
stackView.alignment = .leading