在UITableViewCell
到setEditing:animated:
中进入编辑模式时,会有一个(隐式)动画,其中单元格向右移动,删除“按钮”出现在左侧。
在进入编辑模式时,如何使用Core Animation功能管理第二个动画同时到第一个动画,即具有相同的开始时间,持续时间,时间曲线和等等? (我实际上是在尝试同步更改单元格子层的宽度。)
我研究了Core Animation Programming Guide并尝试了自定义UITableViewCell
类中的一些技术,例如覆盖willTransitionToState:
。原则上,一切都运作良好,然而,我只能设法一个接一个地动画,但不能同时。
非常感谢任何建议。
答案 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];