【发布时间】:2011-09-02 09:34:12
【问题描述】:
所以我正在尝试使用苹果核心动画创建一个动画条形图。该条基本上是一个矩形图形,其值为 0-100%。当它第一次出现时,我希望它显示一个从 0 到 x % 的动画。这样的长方形怎么画?
更新: 很可能我会有一个条形图作为图像,所以我需要将此图像动画到某个高度...
【问题讨论】:
标签: iphone objective-c ipad core-animation
所以我正在尝试使用苹果核心动画创建一个动画条形图。该条基本上是一个矩形图形,其值为 0-100%。当它第一次出现时,我希望它显示一个从 0 到 x % 的动画。这样的长方形怎么画?
更新: 很可能我会有一个条形图作为图像,所以我需要将此图像动画到某个高度...
【问题讨论】:
标签: iphone objective-c ipad core-animation
如果您的要求真的那么简单,您可以创建一个视图,设置其背景颜色并根据需要调整(或动画)其 frame.width(或高度)。
当然还有更精细的方法可以做到这一点,但不需要为一个简单的问题过度设计。
【讨论】:
contentMode。如果您要智能拉伸图像,您还应该查看 UIImage 的stretchableImageWithLeftCapWidth:topCapHeight:,例如这样当整个图像发生变化时,带有斜角的源图像就不会改变斜角的大小。
这应该完全符合您的要求:
- (UIImageView*)createNewBarWithValue:(float)percent atLocation:(CGPoint)location
{
UIImageView *newBar = [[[UIImageView alloc] initWithFrame:CGRectMake(location.x, location.y, 50, 200)] autorelease];
newBar.image = [UIImage imageNamed:@"bar.png"];
CABasicAnimation *scaleToValue = [CABasicAnimation animationWithKeyPath:@"transform.scale.y"];
scaleToValue.toValue = [NSNumber numberWithFloat:percent];
scaleToValue.fromValue = [NSNumber numberWithFloat:0];
scaleToValue.duration = 1.0f;
scaleToValue.delegate = self;
newBar.layer.anchorPoint = CGPointMake(0.5, 1);
[newBar.layer addAnimation:scaleToValue forKey:@"scaleUp"];
CGAffineTransform scaleTo = CGAffineTransformMakeScale( 1.0f, percent );
newBar.transform = scaleTo;
return newBar;
}
【讨论】: