我希望视图的顶部在快速动画中与视图的底部相遇以使其消失。 (最好先增长一秒钟。)

我将如何去做呢? UIView的背景图案设置为[UIColor colorWithPattern:],当我执行self.textOptionsPopover.transform = CGAffineTransformMakeScale(0.0, 0.5);时,它完全消失了。

最佳答案

您的x缩放参数错误-CGAffineTransformMakeScale(0.0, 0.5)更改为CGAffineTransformMakeScale(1.0, 0.5),因为您不想修改宽度。

0.0是您的视图消失的原因。

但是,如果您希望先使其增长一段时间,则使用CAKeyframeAnimation会更容易-您可以轻松地控制键时间,值和计时功能。例如,您可以执行以下操作:

CAKeyframeAnimation *shrinkAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
shrinkAnimation.values = [NSArray arrayWithObjects:
                          [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0, 1.0)],
                          [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.4, 1.0)],
                          [NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 0.0, 1.0)],
                          nil];
shrinkAnimation.keyTimes = [NSArray arrayWithObjects:@0.0, @0.2, @1.0, nil];
shrinkAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
shrinkAnimation.duration = 0.4;
shrinkAnimation.removedOnCompletion = NO;
shrinkAnimation.fillMode = kCAFillModeForwards;
[self. textOptionsPopover.layer addAnimation:shrinkAnimation forKey:@"shrink"];

编辑:
如果要使视图“从顶部到底部”缩小,只需更改图层的锚点(请记住,更改锚点将更改框架!):
CGRect frame = self.textOptionsPopover.layer.frame;
self.textOptionsPopover.layer.anchorPoint = CGPointMake(0.5, 1.0);
self.textOptionsPopover.layer.frame = frame;

关于ios - 如何使用设置了背景图案的UIView并通过动画将其垂直缩小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16825242/

10-08 21:08