如何在不影响边框的情况下设置按钮大小的动画?

时间:2013-10-01 06:12:13

标签: ios objective-c animation resize cgaffinetransform

在iOS7上,我需要生成一个横向增长的按钮动画(仅在一侧)。为了达到这个效果,我尝试了缩放和平移的组合,但问题是缩放也会影响边框的大小,这不是我想要的。

在此示例中,在将按钮的长度加倍后,侧边框的宽度也加倍:

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setFrame:CGRectMake(100, 100, 100, 100)];
[[button layer] setBorderWidth:2.0f];
[[button layer] setBorderColor:[UIColor blackColor].CGColor];

[UIView beginAnimations:@"button" context:nil];
[UIView setAnimationDuration:1];

button.transform = CGAffineTransformConcat( CGAffineTransformMakeScale(2,1), CGAffineTransformTranslate(button.transform, 50, 0));

button.alpha = 1.0f;
[UIView commitAnimations];
[self.view addSubview:button];

我想知道是否有一个聪明的解决方案可以在不使用CGAffine转换的情况下实现此效果。

2 个答案:

答案 0 :(得分:1)

您可以使用其他属性为按钮的borderWidth设置动画,它可以设置动画。祝你好运!

答案 1 :(得分:0)

UIImage *originalImage = [UIImage imageNamed:@"myImage.png"];
UIEdgeInsets insets = UIEdgeInsetsMake(top, left, bottom, right);
UIImage *stretchableImage = [originalImage resizableImageWithCapInsets:insets];
[myButton setBackgroundImage:stretchableImage forState:UIControlStateNormal];
// the image will be stretched to fill the button, if you resize it.
  

UIEdgeInsets结构中的值确定您没有的边距   想要被拉长。

来自here

的回答