请参阅下面的评论代码。为什么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];
答案 0 :(得分:4)
@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
请尝试!