Я устанавливаю маску со всеми закругленными углами для такого вида:
CGFloat cornerRadius = CGRectGetHeight(self.myView.bounds) / 2;
CGSize cornerRadiusSize = CGSizeMake(cornerRadius, cornerRadius);
CGRect bounds = self.myView.bounds;
CAShapeLayer *maskLayer = [CAShapeLayer layer];
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:bounds byRoundingCorners:UIRectCornerAllCorners cornerRadii:cornerRadiusSize];
maskLayer.path = maskPath.CGPath;
self.myView.layer.mask = maskLayer;
это выглядит так:
Я пытаюсь оживить его в виде пути с закругленными верхними левыми и верхними правыми углами, например:
UIBezierPath *newMaskPath = [UIBezierPath bezierPathWithRoundedRect:bounds byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:cornerRadiusSize];
CABasicAnimation *maskPathAnimation = [CABasicAnimation animationWithKeyPath:@"path"];
maskPathAnimation.duration = 0.3;
maskPathAnimation.fromValue = (id)maskLayer.path;
maskPathAnimation.toValue = (id)newMaskPath.CGPath;
[maskLayer addAnimation:maskPathAnimation forKey:nil];
maskLayer.path = newMaskPath.CGPath;
это выглядит так:
Но анимация искажена, похоже, она анимирует одни углы на другие углы:
maskLayer.path = newMaskPath.CGPath;
- person chedabob   schedule 03.07.2017