2012-01-15 12 views
7

UIButtonの背景イメージビューに一連のイメージをアニメーション表示する方法はありますか?UIButtonの背景イメージをアニメーション化する

私はimageViewプロパティでそれを行うことができましたが、同等の背景プロパティは見つかりませんでした。

10倍

答えて

1

画像、またはそのことについては、テキストをbackroundのボタンを変更するには - あなたは、特定のUIControlStateのためにそれを変更する必要があります...つまりハイライトされ、選択された、障害者

使用

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

アニメーション化できるかどうかはわかりませんが、試したことはありません。それらをアニメートできない場合は、UIImageViewを透明なボタンの背後に置き、その代わりにイメージをアニメーション化することができます。

+0

を私は透明ボタンの後ろにUIImageViewを入れています。ちょっとハッキーですが、何が言えるのですか? 10x – Rizon

0

はい可能です。使用NSTimer、

NSTimer * myTimer = [NSTimer scheduledTimerWithTimeInterval:5.00ターゲット:自己セレクタ:@selector(changeImage)ユーザー情報:リピートゼロ: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++; 
} 

です。しかし、フリップなどのアニメーションを追加するには、把握する必要があります。あなたの必要性を助けるための一つの方法でもありますように。

1

あなたはこのようなUIImageViewをアニメーションUIButton方法をアニメーション化することができます...

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

これはすばらしい解決策です –

関連する問題