编辑模式下的UITableViewCell偏移问题
2017-04-25 本文已影响291人
张智杰
最近在项目中使用了UITableView的编辑模式来进行多选批量操作, 但是出现一个问题,就是用storyboard布局的话,cell里的内容默认是加到了contentView上的,这就导致了tableView变成编辑模式后,cell里的内容被压缩,造成一些显示上的问题。
![](https://img.haomeiwen.com/i1324647/fc4cb743aa86d462.gif)
解决方案
重写UITableCell的<strong>willTransition(to state: UITableViewCellStateMask)</strong>方法
@IBOutlet weak var labelTrailing: NSLayoutConstraint! //label右边距
override func willTransition(to state: UITableViewCellStateMask) {
super.willTransition(to: state)
switch state {
case UITableViewCellStateMask.showingEditControlMask: //cell进入编辑模式
labelTrailing.constant = -30
case []: //cell退出编辑模式
labelTrailing.constant = 8
default:
break
}
}
在进入编辑模式时,将label的右边距同步向右移,退出编辑模式时,再恢复原有布局
![](https://img.haomeiwen.com/i1324647/a0939c0df3dcd7c0.gif)
BY THE WAY
在测试过程中发现其实UITableViewCell的一些系统自带的效果其实都是跟contentView同级的,例如上文的edit选择框,还有cell的accessoryType属性等等,在布局时这些细节最好还是有充分了解~~
![](https://img.haomeiwen.com/i1324647/514b2d733d848c6b.gif)