进入UITableViewCell的编辑模式时同步动画

时间:2011-08-16 21:19:40

标签: iphone ios

UITableViewCellsetEditing:animated:中进入编辑模式时,会有一个(隐式)动画,其中单元格向右移动,删除“按钮”出现在左侧。

在进入编辑模式时,如何使用Core Animation功能管理第二个动画同时到第一个动画,即具有相同的开始时间,持续时间,时间曲线和等等? (我实际上是在尝试同步更改单元格子层的宽度。)

我研究了Core Animation Programming Guide并尝试了自定义UITableViewCell类中的一些技术,例如覆盖willTransitionToState:。原则上,一切都运作良好,然而,我只能设法一个接一个地动画,但不能同时。

非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

好吧,它比我最初认为的简单。通过正确初始化自定义UITableViewCell中的图层(或视图),可以轻松实现我所寻求的行为。但是,我意识到顺序,例如,你是否操纵边界或框架属性是非常重要的。

以下代码段为分组 UITableView中的单元格执行作业。在此示例中,CAGradientLayer(作为CALayer的示例)被添加为UIView的子图层,self.contentView本身作为子视图添加到initWithStyle:reuseIdentifier:细胞。子视图的框架被调整为适合contentView。该代码例如转换为自定义UITableViewCell的{​​{1}}:

CGRect realFrame = self.contentView.frame;
realFrame.size.width += 20;
UIView *gradientView = [[UIView alloc] initWithFrame:realFrame];

CAGradientLayer *gradientLayer = [[CAGradientLayer alloc] init];
gradientLayer.anchorPoint = CGPointMake(0.0, 0.0);
gradientLayer.frame = gradientView.frame;
gradientLayer.position = CGPointMake(0.0, 0.0);
[gradientLayer setColors:[NSArray arrayWithObjects:(id)[[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0] CGColor], (id)[[UIColor clearColor] CGColor], nil]];
gradientLayer.startPoint = CGPointMake(0.5, 0.0);
gradientLayer.endPoint = CGPointMake(0.5, 1.0);

gradientView.layer.masksToBounds = YES;
gradientView.layer.cornerRadius = 8.0;

[gradientView.layer insertSublayer:gradientLayer atIndex:0];
[self.contentView addSubview:gradientView];

gradientView.autoresizingMask = UIViewAutoresizingFlexibleWidth;

[gradientView release];
[gradientLayer release];