2011-08-16 109 views
1

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

如何在进入编辑模式时(即使用相同的开始时间,持续时间,时间曲线等)来管理(可能具有核心动画功能)同时运行第二个动画到第一个动画? (实际上,我试图同步变化的一个细胞的子层的宽度)。

我研究了Core Animation Programming Guide并通过覆盖willTransitionToState:尝试一些技巧在自定义UITableViewCell类,例如。原则上,一切运作良好,但是,我只能设法让动画一个接一个,但不能同时进行。

任何意见非常感谢。

回答

0

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

以下代码片段为中的单元格分组UITableView的作业。在此示例中,将CAGradientLayer(作为CALayer的示例)作为子层添加到UIView,该子层本身作为子视图添加到该单元的self.contentView。子视图的框架被调整以适应contentView。该代码例如进入initWithStyle:reuseIdentifier:的定制UITableViewCell

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]; 
相关问题