2012-01-15 38 views
7

Có cách nào để tạo hoạt ảnh cho chế độ xem hình ảnh nền UIButton với một bộ hình ảnh không?Hình nền hoạt hình UIButton

Tôi đã quản lý để làm như vậy với thuộc tính imageView, nhưng không thể tìm thấy thuộc tính nền tương đương.

10x

Trả lời

1

Để thay đổi một nút backround hình ảnh, hoặc văn bản cho rằng vấn đề - bạn cần phải thay đổi nó cho UIControlState đặc biệt ... tức là Tóc Highlight, chọn, Disabled

Sử dụng

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

Tôi không chắc chắn liệu bạn có thể tạo ảnh động cho họ hay không, tôi chưa bao giờ thử. Nếu bạn không thể tạo ảnh động cho họ, thì bạn có thể đặt một UIImageView sau một nút trong suốt và làm động các hình ảnh trong đó thay thế - chỉ là một ý nghĩ.

+0

Tôi đã đặt một UIImageView đằng sau một nút trong suốt. Một chút hacky, nhưng những gì tôi có thể nói - đó là làm việc! 10x – Rizon

0

Có thể thực hiện được. Sử dụng NSTimer,

NSTimer * myTimer = [NSTimer được lập lịchTimerWithTimeInterval: 5.00 đích: tự chọn: @selector (changeImage) userInfo: nil repeats: YES];

sau đó, phương pháp là như sau,

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

Nó làm việc cho tôi. Nhưng thêm hoạt hình như lật vv cần phải tìm ra. Hy vọng điều này cũng là một cách để giúp bạn.

1

Bạn có thể làm động một UIButton theo cách bạn làm động một UIImageView như thế này ...

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

Và bạn sử dụng nó như thế này:

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

Đây là những gì tôi đã làm (bên trong một lớp con UIButton):

Đặt hình ảnh nút, như thường lệ:

[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]; 

Override nhấn mạnh:

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

Đây là một giải pháp tuyệt vời –

Các vấn đề liên quan