所以我试图创建一个可以在给定视图上绘制扩展和渐弱气泡的类。 (它看起来类似于dynmaic壁纸,但在我的应用程序中)。我非常感觉这些问题与我的形状层的anchorPoint或框架有关,但我不能为我的生活让这个代码工作。函数newBubble应绘制一个圆并进行设置,以便它可以扩展到1.0并在4.0秒内将不透明度淡化为0.0。一切都很完美除了圆圈相对于0,0缩放。 (好像有人把针放在0,0并从圆圈的右下角拉伸。)
我将锚设置为(0.5,0.5)和许多其他东西,没有用。我将框架设置为绘制的框架,然后将框架设置为整个视图,没有任何效果。我已经配音了好几个小时,我似乎无法弄清楚这一点。所有动画发生的newBubble函数都在下面,您可以在此link找到整个xcodeproj(只是一个每半秒触发一次的计时器和一个停止/启动按钮)。我知道这是非常简单的,所以提前感谢!
- (void) newBubble {
int x = arc4random() % (int) (bubblesView.frame.size.width-100);
int y = arc4random() % (int) (bubblesView.frame.size.height-100);
CGRect circleFrame = CGRectMake(x, y, 100, 100);
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:circleFrame];
CAShapeLayer *bubble = [CAShapeLayer layer];
bubble.path = path.CGPath;
bubble.anchorPoint = CGPointMake(0.5f, 0.5f);
bubble.frame = circleFrame;
bubble.fillColor = [UIColor whiteColor].CGColor;
CABasicAnimation *bubbleFadeIn = [CABasicAnimation animationWithKeyPath:@"opacity"];
bubbleFadeIn.fromValue = [NSNumber numberWithFloat:1.0f];
bubbleFadeIn.toValue = [NSNumber numberWithFloat:0.0f];
CABasicAnimation *bubbleExplode = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
bubbleExplode.fromValue = [NSNumber numberWithFloat:0.0f];
bubbleExplode.toValue = [NSNumber numberWithFloat:1.0f];
CAAnimationGroup *bubbleAnims = [CAAnimationGroup animation];
[bubbleAnims setAnimations:[NSArray arrayWithObjects:bubbleFadeIn, bubbleExplode, nil]];
[bubbleAnims setDuration:4.0];
[bubbleAnims setRemovedOnCompletion:NO];
[bubbleAnims setFillMode:kCAFillModeForwards];
[bubble addAnimation:bubbleAnims forKey:nil];
[bubblesView.layer addSublayer:bubble];
}
注意:bubblesView是类的一个属性,它由启动它的视图控制器设置为self.view。如果您仍然感到困惑,我建议您打开xcode文件。
答案 0 :(得分:0)
想出来......
CGRect circleFrame = CGRectMake(x, y, 100, 100);
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:circleFrame];
CGPoint circleAnchor = CGPointMake((x+50)/ bubblesView.frame.size.width, (y+50)/ bubblesView.frame.size.height);
CAShapeLayer *bubble = [CAShapeLayer layer];
bubble.path = path.CGPath;
bubble.anchorPoint = circleAnchor;
bubble.frame = bubblesView.frame;
bubble.fillColor = [UIColor whiteColor].CGColor;