0

目前我有一个图像...一个电池图标...

_MeterBar = [[UIImageView alloc] initWithFrame:CGRectMake(25, 40, 50, 40)];
_MeterBar.image = [UIImage imageNamed:@"battery-empty-icon.png"];
_MeterBar.backgroundColor = [UIColor clearColor];

我正在尝试添加一个动画,当从 Web 服务器获取值时,该动画显示电池加载到电池的特定点。

获取值没问题,但添加动画是个问题。我基本上复制并粘贴了一些用户之前回答的代码,但我被卡住了:/。当我添加动画时,没有图像......

CABasicAnimation *scaleToValue = [CABasicAnimation animationWithKeyPath:@"transform.scale.x"];
scaleToValue.toValue = [NSNumber numberWithFloat:100.0f];
scaleToValue.fromValue = [NSNumber numberWithFloat:0];
scaleToValue.duration = 1.0f;
scaleToValue.delegate = self;
_MeterBar.layer.anchorPoint = CGPointMake(0.5, 1);
[_MeterBar.layer addAnimation:scaleToValue forKey:@"scaleRight"];
CGAffineTransform scaleTo = CGAffineTransformMakeScale(1.0f, 50.0f);
_MeterBar.transform = scaleTo;

[_PowerNowView addSubview:_MeterBar];

电池图标比高更宽,所以我在 x 轴上从 0 -> 百分比设置动画。

如果有人有任何提示、提示或示例示例来执行此确切动画,我将非常感谢您的帮助:)

谢谢你。

PS Heres the URL of the battery Icon I found : Battery Icon

抱歉不清楚,但我希望有一个与电池图标分开的颜色层...

我想在电池图像上创建一个条形图,并让该条形图根据电池的大小动态设置动画......实际上并没有调整电池图像本身的大小......

所以会有两层,一层用于尺寸主要是静态的电池,另一层是彩色条,可能是绿色,代表电池图像的填充量。

我想做的一个很好的参考是 MINT 应用程序的作用,其目的是记录您的银行对账单。

最终动画

上面的最终动画电池非常好,但我只想在电池中显示一个条形图,并根据拉取的数据值对其进行动画处理。

4

1 回答 1

1

有几件事。

您的 100 比例将使您的图层比正常情况大 100 倍。如果它的一侧是 300 像素,则 100 的比例将显示为一侧 30,000 像素。

您希望将值缩放到 1.0,而不是 100。

另外,我不确定缩放变换是否会将先前的比例乘以增长因子。如果是这样,那么 0 的起始比例值将阻止它永远增长,因为任何时间为零的东西仍然是零。尝试使用 0.0001 而不是 0.0 的值,

如果你想让你的电池图像从左到右增长,你不希望你的锚点是 (0,.5) 而不是 (.5, 1) 吗?

而且,当您更改锚点时,它不仅会更改变换的中心,还会移动图像的位置。您将需要调整位置以进行补偿。我总是不得不挠头并认真考虑它(无论如何通常都会弄错),但我认为您可能希望将视图的 X 位置向右移动其宽度的一半。

请注意,缩放图像会导致它奇怪地拉伸。它开始时又短又胖,然后伸展到正常大小。

最好将 CAShapeLayer 作为遮罩层附加到视图,并将形状层的路径从空矩形(宽度 = 0,高度 = 视图的全高)设置为视图全尺寸的矩形。这将导致视图在“擦除”动画中进行动画处理,从左到右显示它而不拉伸。

于 2013-06-18T20:40:00.867 回答