UIButton анимация не работает должным образом - PullRequest
0 голосов
/ 18 февраля 2011

См. Прокомментированный код ниже. Почему UIButton действует иначе, чем UIView?

//button creation
UIButton *myBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[myBtn setImage:[UIImage imageNamed:@"someImage"] forState:UIControlStateNormal];
self.myButton = myBtn;

...
///in the button target method:

UIView* test = [[UIView alloc] initWithFrame:self.myButton.frame];
test.backgroundColor = [UIColor redColor];
[buttonContainer addSubview:test];

[UIView beginAnimations:@"SomeAnimation" context:nil];
[UIView setAnimationDuration:5];
[UIView setAnimationDelegate:self];
self.myButton.frame = CGRectMake(100,100,200,200); //the position animates smoothly, but the size snaps to 200,200 immediately
//test.frame = CGRectMake(100,100,200,200); //this works perfectly. the position and size both animate smoothly over the 5 seconds.
[UIView commitAnimations];

1 Ответ

4 голосов
/ 15 марта 2011
@implementation UIButton(fixResizeAnimation)

- (void)setFrame:(CGRect)_frame {
  [super setFrame:_frame];
  for(UIView* v in self.subviews) {
    if([v isKindOfClass:[UIImageView class]]) {
      [v setFrame:_frame];
    }
  }
}

@end

Пожалуйста, попробуйте!

...