改变UITableViewCell编辑状态的样式
@implementation CustomCell - (void)layoutSubviews { [super layoutSubviews]; for (NSObject *obj in self.subviews) { NSLog(@"%@",obj); } } @end
首先通过重写layoutSubviews方法,看看不同状态下的cell里面有哪些东西。
在编辑状态下cell里面会出现
UITableViewCellReorderControl//移动的
UITableViewCellDeleteConfirmationControl//删除的
这两个应该是苹果的私有类。
- (void)willTransitionToState:(UITableViewCellStateMask)state
- (void)didTransitionToState:(UITableViewCellStateMask)state
这两个是cell改变状态时会被调用的方法。在此时便可以去获取上面找到的两个control并改变他们的位置或者addsubview添加一些样式。
如下:
- (void)willTransitionToState:(UITableViewCellStateMask)state { /*调整坐标让动画流畅*/ if (state == UITableViewCellStateDefaultMask) { for (NSObject *obj in self.subviews) { if ([obj isMemberOfClass:NSClassFromString(@"UITableViewCellReorderControl")]) { ((UIView *)obj).originX += 10; } else if ([obj isMemberOfClass:NSClassFromString(@"UITableViewCellDeleteConfirmationControl")]) { ((UIView *)obj).originX += 12; } } }else if (state == UITableViewCellStateShowingEditControlMask) { for (NSObject *obj in self.subviews) { if ([obj isMemberOfClass:NSClassFromString(@"UITableViewCellDeleteConfirmationControl")]) { ((UIView *)obj).originX += 12; } } } [super willTransitionToState:state]; }