可伸缩按钮图像的大小可以在Cocoa Touch中设置动画吗?

时间:2009-10-08 12:58:15

标签: cocoa-touch core-animation

我正在创建一个带有 stretchableImageWithLeftCapWidth的UIButton:topCapHeight:

我想像Core Animation一样顺利地改变它的大小:

float shrinkFactor = 0.2;
NSTimeInterval slowSpeed = 5.0;

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:slowSpeed];

UIButton *thisButton = (UIButton *)[self.view viewWithTag:2];
thisButton.frame = CGRectMake(thisButton.frame.origin.x, thisButton.frame.origin.y, buttonStretchedWidth * shrinkFactor, thisButton.frame.size.height);

[UIView commitAnimations];

按钮图像大小没有动画,它只是捕捉到新的大小。

当我按下按钮的 backgroundColor 时,我看到框架本身是正确的动画。

我是否遗漏了某些内容,或者图片是否无法动画?

1 个答案:

答案 0 :(得分:2)

我从来没有能够连续更新图像。尝试将图片分割为大写和中心区域,并使用相应的UIImageView集创建八个或九个autoresizingMask子视图。例如。右上角视图应为UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin,底部中心视图(拉伸)应为UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin,依此类推。 iPhone OS上的视图非常便宜,一旦它们被创建,所以我认为除非你一次动画六个按钮,否则你会看到性能上升。尽管合成非不透明视图非常昂贵,但请确保制作任何不透明的内容。