设置UITableViewCell的accessoryType时右侧UITextField位移如何解决?
问题根因
你的UITextField的trailing约束默认绑定在cell的contentView尾部,当你设置系统的accessoryType时,系统会自动压缩contentView的宽度给accessory预留位置,自然会带动textField向左偏移。
解决方案
- 方案1:修改约束绑定对象
直接将textField的trailing约束绑定到cell本身,而不是cell的contentView,这样约束不会跟随contentView的宽度变化而改动。
如果使用Storyboard/Xib设置约束,选中你当前的trailing约束,将关联的父级对象从contentView.trailing改为superview.trailing,约束的常量值维持你原有设置即可。
如果是手写代码约束,参考写法:
// 替换原绑定contentView的约束 textField.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -16).isActive = true
原有切换accessory状态的代码不用改动,可以直接保留使用。
- 方案2:自定义勾选视图替代系统accessory
不使用系统自带的accessoryType,在自定义cell的最右侧自己添加一个UIImageView,设置好对勾图标,通过控制isHidden属性切换显示隐藏即可。这种方式不会触发contentView的自动缩进,textField的约束不需要做任何修改,还可以自定义对勾的颜色、大小、边距等样式,灵活度更高。
内容的提问来源于stack exchange,提问作者lorenzo
相关产品推荐
相关产品推荐

