@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];
}
本文详细介绍了如何在UITableView中自定义UITableViewCell的编辑状态,包括如何调整编辑控件的位置以实现流畅的动画效果。通过重写layoutSubviews方法和利用willTransitionToState及didTransitionToState方法,可以对单元格在不同编辑状态下的显示进行精细控制。
3269

被折叠的 条评论
为什么被折叠?



