在编辑模式下使用带有子视图/图层的自定义单元格分组UITableView

时间:2011-08-12 19:30:32

标签: iphone ios

我有一个带有自定义单元格的分组 UITableView(由子类UITableViewCell创建)。我添加子视图并插入子图层,如下所示:

[self.contentView addSubview:myUILabel];

[self.contentView.layer insertSublayer:myCALayer];

进入编辑模式以删除行时,单元格向右移动,myUILabelmyCALayer 超出单元格的边框,这看起来很难看。

我试过了:

Grouped UITableView with custom UILabels in Editing Mode

......但它没有帮助。

在我的自定义单元格

中覆盖setEditing:是什么“有点”
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    CGRect oldBounds = self.myCALayer.bounds;
    CGRect newBounds = oldBounds;
    CGPoint oldPosition = self.myCALayer.position;
    CGPoint newPosition = oldPosition;
    //move right
    if (editing && !self.showingDeleteConfirmation) {
        newBounds.size.width -=32;
        newPosition.x -= 15;
    }
    //move back left
    else if (self.editing) {
        newBounds.size.width += 32;
        newPosition.x += 15;
    }
    self.myCALayer.bounds = newBounds;
    self.myCALayer.position = newPosition;
    [super setEditing:editing animated:animated];
}

...但是,动画不会同步执行。当进入编辑模式时单元格向右移动时,首先图层的宽度会缩小,然后位置会发生变化。虽然图层最终适合单元格,但动画看起来很糟糕。

感谢您的建议!

1 个答案:

答案 0 :(得分:0)

不确定您的图层,但您应该能够在子视图上设置智能autoresizingMask,以便在桌面视图更改contentView的大小时对其进行适当的重新布局(在编辑模式)。

更多here.

编辑:稍微看一下,我认为CALayer的{​​{1}}属性可能有助于您的子图层。 (更多here

或者(这有点像黑客攻击,并且可能会在一定程度上损害性能),您可以在UIView上设置自定义图层,并设置适当的anchorPoint