改变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];
}
posted @ 2013-04-05 17:12  HCN.  阅读(779)  评论(0编辑  收藏  举报