我試圖做到以下幾點: 用戶點擊視圖,圓形視圖彈出到它的左邊並帶有一些圖像內容。該視圖應該從觸摸點開始到觸摸視圖之外和左側的最終框架開始動畫。在動漫它應該是一個圈子,成長爲正確的位置和大小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