动画UIButton背景图像

时间:2012-01-15 20:11:42

标签: iphone objective-c ios ios4 animation

有没有办法用一组图像为UIButton背景图像视图设置动画?

我已经设法使用imageView属性,但无法找到等效的背景属性。

10倍

4 个答案:

答案 0 :(得分:11)

这是我做的(在UIButton子类中):

设置按钮图像,如常规:

[self setBackgroundImage:[[UIImage imageNamed:@"button"] resizableImageWithCapInsets:UIEdgeInsetsMake(10.0, 10.0, 10.0, 10.0)] forState:UIControlStateNormal];
[self setBackgroundImage:[[UIImage imageNamed:@"button_pressed"] resizableImageWithCapInsets:UIEdgeInsetsMake(10.0, 10.0, 10.0, 10.0)] forState:UIControlStateHighlighted];

突出显示突出显示:

- (void)setHighlighted:(BOOL)highlighted {
     [UIView transitionWithView:self duration:0.25 options:UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionAllowAnimatedContent animations:^{
         [super setHighlighted:highlighted];
     } completion:nil]; 
}

答案 1 :(得分:1)

要更改按钮背景图像或文本 - 您需要为特定的UIControlState更改它...即突出显示,已选中,已禁用

使用

- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state

我不确定你是否可以为它们制作动画,我从未尝试过。如果您无法为它们设置动画,那么您可以将UIImageView放在透明按钮后面,然后在其中设置动画效果 - 只是一个想法。

答案 2 :(得分:1)

您可以像UIButton一样动画UIImageView这样的动画......

-(void) addAnimationToButton:(UIButton*) button{
    UIImageView* animationView = [button imageView];
    NSArray* animations=[NSArray arrayWithObjects:
                         [UIImage imageNamed:@"sprite1.png"],
                         [UIImage imageNamed:@"sprite2.png"],
                         [UIImage imageNamed:@"sprite2.png"],
                         //and so on if you need more
                         nil];
    CGFloat animationDuration = 2.0;
    [animationView setAnimationImages:animations];
    [animationView setAnimationDuration:animationDuration];
    [animationView setAnimationRepeatCount:0]; //0 is infinite
}

你这样使用它:

[self addAnimationToButton:yourButton];
[[yourButton imageView] startAnimating]; //or stopAnimating

答案 3 :(得分:0)

是的,这是可能的。使用NSTimer,

NSTimer * myTimer = [NSTimer scheduledTimerWithTimeInterval:5.00 target:self selector:@selector(changeImage)userInfo:nil repeats:YES];

然后,方法如下,

- (void)changeImage
 {

           static int counter = 0;

           if([bannerArray count] == counter)
            {
                   counter = 0;
            }
            [button setImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:bannerArray[counter]]]] forState:UIControlStateNormal];

          counter++;
}

它对我有用。但是添加像翻转等动画需要弄明白。希望这也是帮助您需要的一种方式。