最好用这种个人感觉:
- (void)scanAnimation
{
if ([UIDevicecurrentDevice].batteryState==UIDeviceBatteryStateUnplugged) {
self.scanImageView.alpha =0.0;
return;
}
self.scanImageView.alpha =0.5;
self.scanImageView.frame =CGRectMake(28,GNDEVICE_SCREEN_HEIGHT-82,320, 82);
[UIViewbeginAnimations:@"ChargeViewAnimationID"context:NULL];
[UIViewsetAnimationDuration:5.0];
[UIViewsetAnimationCurve:UIViewAnimationCurveEaseIn];
[UIViewsetAnimationRepeatAutoreverses:NO];
[UIViewsetAnimationRepeatCount:MAXFLOAT];
self.scanImageView.frame =CGRectMake(28, -82,320, 82);
[UIViewcommitAnimations];
}
用下面这种方法会出现莫名的问题,例如不用调用到dealloc
- (void)scanAnimation
{
if ([UIDevicecurrentDevice].batteryState==UIDeviceBatteryStateUnplugged) {
self.scanImageView.alpha =0.0;
return;
}
self.scanImageView.alpha =0.5;
self.scanImageView.frame =CGRectMake(28,GNDEVICE_SCREEN_HEIGHT-82,320, 82);
[UIViewanimateWithDuration:5.0animations:^{
self.scanImageView.frame =CGRectMake(28, -82,320, 82);
} completion:^(BOOL finished) {
[selfscanAnimation];
} ];
}