Анимация UIButton фоновое изображение - PullRequest
8 голосов
/ 16 января 2012

Есть ли способ анимировать представление фонового изображения UIButton с помощью набора изображений?

Мне удалось сделать это с помощью свойства imageView, но не удалось найти эквивалентное свойство фона.

10x

Ответы [ 4 ]

11 голосов
/ 27 апреля 2015

Вот что я сделал (внутри подкласса 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 голос
/ 13 марта 2014

Вы можете анимировать 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
1 голос
/ 16 января 2012

Чтобы изменить фоновое изображение кнопок или текст в этом отношении - вам нужно изменить его для конкретного UIControlState ... т.е. выделено, выбрано, отключено

Используйте

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

Я не уверен, что вы можете оживить их, я никогда не пробовал. Если вы не можете анимировать их, тогда вы можете поместить UIImageView за прозрачную кнопку и анимировать изображения в ней - просто мысль.

0 голосов
/ 27 ноября 2013

Да, это возможно. Используйте NSTimer,

NSTimer * myTimer = [NSTimer scheduleTimerWithTimeInterval: 5,00 цель: собственный выбор: @selector (changeImage) userInfo: nil повторяется: ДА];

тогда метод выглядит следующим образом:

- (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++;
}

Это сработало для меня. Но добавление анимации, такой как переворот и т. Д., Необходимо выяснить. Надеюсь, что это также один из способов помочь вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...