我正在使用自动布局在我的项目,并有一个‘详细的视图’幻灯片上的‘瓷砖视图’的按钮按下。
‘瓷砖视图’是对齐的顶部,底部,左和右。“详细视图”与中心x、y对齐,宽度/高度相等。
我得到了动画的工作,但我不得不使用两种不同的方法:
1)这是我最喜欢的动画制作方法,在“瓷砖视图”上工作得很好。
CAKeyframeAnimation* tileKeyAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
tileKeyAnimation.fillMode = kCAFillModeForwards;
tileKeyAnimation.removedOnCompletion = NO;
tileKeyAnimation.keyTimes = @[@0,@0.45];
tileKeyAnimation.values = @[[NSValue valueWithCATransform3D:CATransform3DIdentity],
[NSValue valueWithCATransform3D:self.tileTransform]];
tileKeyAnimation.duration = 0.5;
[_tileView.layer addAnimation:tileKeyAnimation forKey:@"transform"];2)由于以上动画并不适用于“详细视图”,所以我采用了另一种类型的动画。(我为centreX约束创建了一个名为_detailedCenterXConstraint的出口)
_detailedCenterXConstraint.constant = _tileView.bounds.size.width;
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
[context setTimingFunction:[[CAMediaTimingFunction alloc] initWithControlPoints:0 :0 :0 :0.45]];
[context setDuration:[self pushAnimationDuration]];
[_detailedCenterXConstraint.animator setConstant:_detailedView.bounds.size.width];
} completionHandler:^{
}];这种方法的问题是动画并不匹配。我尝试在(2)中使用自定义的CAMediaTimingFunction来匹配(1)中的动画计时,但我似乎没有正确地使用它。
为什么CAKeyframeAnimation (1)不应该在我的“详细视图”上工作?
另外,这两种方法之间是否有一种匹配动画时间的方法?
发布于 2016-06-15 10:16:34
我成功地获得了与以下代码相同的动画:
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
[context setTimingFunction:0.45 :1.0 :0.45 :1.0];
[context setDuration:[self pushAnimationDuration]/2];
[_detailedCenterXConstraint.animator setConstant:_detailedView.bounds.size.width];
} completionHandler:^{
}];https://stackoverflow.com/questions/37818125
复制相似问题