我正在创建一个带有 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 时,我看到框架本身是正确的动画。
我是否遗漏了某些内容,或者图片是否无法动画?
答案 0 :(得分:2)
我从来没有能够连续更新图像。尝试将图片分割为大写和中心区域,并使用相应的UIImageView
集创建八个或九个autoresizingMask
子视图。例如。右上角视图应为UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin
,底部中心视图(拉伸)应为UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin
,依此类推。 iPhone OS上的视图非常便宜,一旦它们被创建,所以我认为除非你一次动画六个按钮,否则你会看到性能上升。尽管合成非不透明视图非常昂贵,但请确保制作任何不透明的内容。