macOS Swift开发中如何实现NSSecureTextField的文本垂直对齐
解决方案
- 确认Interface Builder中修改的是正确的对象层级:NSSecureTextField是控件容器,内部嵌套了独立的NSSecureTextFieldCell实例,你需要在左侧文档大纲中展开对应的NSSecureTextField,选中其子元素
Secure Text Field Cell,再在属性检查器中修改自定义类为PasswordCellField,不要直接修改外层NSSecureTextField的类。 - 清理重复逻辑:你同时实现了
drawingRect重写和adjustedFrame垂直居中逻辑,二者对文本布局的修改可能存在冲突,可先注释掉drawingRect的全部实现,仅保留edit、select、drawInterior、draw四个重写方法验证效果。 - 强制触发控件重绘:在对应ViewController的
viewDidLoad生命周期方法中,给目标密码输入框添加如下代码,强制刷新布局和渲染:
yourPasswordTextField.needsLayout = true yourPasswordTextField.needsDisplay = true
- 代码注入验证:如果IB修改始终不生效,可以用代码直接赋值自定义cell验证逻辑是否正确,在ViewController中添加代码:
let customCell = PasswordCellField() customCell.isSecureTextEntry = true yourPasswordTextField.cell = customCell
如果代码赋值后效果正常,即可确认是IB类绑定的操作错误。
内容的提问来源于stack exchange,提问作者Ashkar
相关产品推荐
相关产品推荐

