You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SkyFloatingLabelTextField中实现文本水平及垂直居中对齐

问题原因

你设置的原生contentVerticalAlignment属性不生效,是因为SkyFloatingLabelTextField 为了实现顶部浮动占位符效果,重写了文本绘制的布局逻辑,原生的垂直对齐规则会被组件自身的布局逻辑覆盖,需要用组件自带的专用属性调整。

解决方案

直接使用组件提供的textVerticalOffset属性调整文本垂直位置,你可以根据输入框高度和字体大小动态计算居中需要的偏移量,代码如下:

// 建议在viewDidLayoutSubviews中调用,确保输入框布局已经完成
selectTradeTxt.textVerticalOffset = (selectTradeTxt.bounds.height - selectTradeTxt.font.lineHeight) / 2

如果你的输入框高度是固定值,也可以直接手动设置偏移量,根据实际显示效果微调数值即可,比如:
selectTradeTxt.textVerticalOffset = 5

如果需要让未输入状态下的占位符也保持垂直居中,可以额外设置占位符的偏移属性:

// 未激活状态占位符的垂直偏移
selectTradeTxt.placeholderVerticalOffset = (selectTradeTxt.bounds.height - selectTradeTxt.font.lineHeight) / 2
// 激活后顶部浮动标签的垂直偏移,可根据视觉需求自行调整
selectTradeTxt.titleVerticalOffset = 3

额外优化建议

你代码中手动设置rightView frame的代码可以删除,rightView的尺寸会由组件自动计算,手动赋值反而可能导致布局异常。


内容的提问来源于stack exchange,提问作者Pinal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 23:27:03