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