2015-04-01 49 views
2

IAM試圖創建的UIButton 脈動動畫這些是我的代碼,到目前爲止,但仍是無法做到在這個環節如何爲UIButton iOS創建一個脈動動畫?

CSS pulsating button

我的代碼

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    button.backgroundColor = [UIColor lightGrayColor]; 
    [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
     [button addTarget:self 
       action:@selector(method) 
    forControlEvents:UIControlEventTouchUpInside]; 
    [button setTitle:@"Show View" forState:UIControlStateNormal]; 
    button.frame = CGRectMake(80.0, 210.0, 160.0, 160.0); 
    CABasicAnimation *pulseAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 
    pulseAnimation.duration = .5; 
    pulseAnimation.toValue = [NSNumber numberWithFloat:1.1]; 
    pulseAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
    pulseAnimation.autoreverses = YES; 
    pulseAnimation.repeatCount = FLT_MAX; 
    [button.layer addAnimation:pulseAnimation forKey:nil]; 
    button.layer.cornerRadius=button.frame.size.width/2; 
    ; 
    button.layer.masksToBounds = YES; 

    [self.view addSubview:button]; 

回答

7
顯示的完整動畫

試試這個。

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
button.frame = CGRectMake(0, 0, 100, 100); 
button.center = self.view.center; 
[button setTitle:@"Button" forState:UIControlStateNormal]; 

UIView *c = [[UIView alloc] initWithFrame:button.bounds]; 
c.backgroundColor = [UIColor blueColor]; 
c.layer.cornerRadius = 50; 
[button addSubview:c]; 
[button sendSubviewToBack:c]; 

UIView *f = [[UIView alloc] initWithFrame:button.bounds]; 
f.backgroundColor = [[UIColor blueColor] colorWithAlphaComponent:0.3]; 
f.layer.cornerRadius = 50; 
[button addSubview:f]; 
[button sendSubviewToBack:f]; 

CABasicAnimation *pulseAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 
pulseAnimation.duration = .5; 
pulseAnimation.toValue = [NSNumber numberWithFloat:1.1]; 
pulseAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
pulseAnimation.autoreverses = YES; 
pulseAnimation.repeatCount = MAXFLOAT; 
[c.layer addAnimation:pulseAnimation forKey:@"a"]; 
[button.titleLabel.layer addAnimation:pulseAnimation forKey:@"a"]; 

CABasicAnimation *fade = [CABasicAnimation animationWithKeyPath:@"opacity"]; 
fade.toValue = @0; 
CABasicAnimation *pulse = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 
pulse.toValue = @2; 
CAAnimationGroup *group = [CAAnimationGroup animation]; 
group.animations = @[fade,pulse]; 
group.duration = 1.0; 
group.repeatCount = MAXFLOAT; 
[f.layer addAnimation:group forKey:@"g"]; 

[self.view addSubview:button]; 
+0

好吧加入我的項目 – 2015-04-01 08:01:32

+0

酷它的工作 – 2015-04-01 08:06:11

+0

謝謝。它的工作正常。 – Raja 2017-01-02 09:18:20