我试图做到以下几点: 用户点击视图,圆形视图弹出到它的左边并带有一些图像内容。该视图应该从触摸点开始到触摸视图之外和左侧的最终框架开始动画。在动漫它应该是一个圈子,成长为正确的位置和大小Masked UIView,CALayer的动画
所有与下面的代码工作得很好,只有动画期间,圆形边界是只在左边。这就像CALayer
形状滑入其最终框架。
它看起来有点像这样。
一旦动画完成后,我按预期的方式完整的圆。
CGFloat w = 300;
CGRect frame = CGRectMake(myX, myY, w, w);
CGPoint p = [touch locationInView:self.imageView];
CGRect initialFrame = CGRectMake(p.x, p.y, 0,0);
UIImageView *circle = [[UIImageView alloc] initWithFrame:frame];
circle.image = [UIImage imageNamed:@"china"];
circle.contentMode = UIViewContentModeScaleAspectFill;
circle.backgroundColor = [UIColor clearColor];
circle.layer.borderWidth = 1;
circle.layer.borderColor = [UIColor grayColor].CGColor;
circle.layer.masksToBounds = YES;
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
CGRect maskRect = CGRectMake(0, 0, w, w);
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddEllipseInRect(path, nil, maskRect);
maskLayer.path = path;
CGPathRelease(path);
circle.layer.mask = maskLayer;
circle.frame = initialFrame;
[self.imageView addSubview:circle];
[UIView animateWithDuration:1.0 animations:^{
circle.frame = frame;
}];
我已经尝试过与CALayer
的cornerRadius
工作,但不会导致令人满意的结果无论是作为半径会对以及与帧大小改变。
太棒了!特别感谢您的文档工作。这是一个伟大而可行的解释。我现在按预期工作。 – Mundi