我需要在UIView从一个地方移动到另一个地方时为其设置动画,我使用以下内容:
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{
_whileSpitImageView.image = [UIImage imageNamed:@"picture.png"];
_whileSpitImageView.frame = CGRectMake(160, 300, 50, 50);
} completion:nil];
}
但视图只是移动而不是移动动画,有什么建议吗?
答案 0 :(得分:0)
您滥用UIView animateWithDuration。问题是animateWithDuration只能动画UIView的一些属性,它们是frame,bounds,center,transform,alpha,backgroundColor和contentStretch(Animations From Apple)。
您可能想要一步一步的动画。例如:
$(selector)
请注意。我不确定语法是否完全正确,我使用的是在线转换器。但逻辑是存在的。最初的Objective-C预翻译如下
var imageView: UIImageView?
UIView.animate(withDuration: 0.3, animations: {
imageView?.alpha = 0.0},
completion: {(_ finished: Bool) -> Void in
imageView?.image = UIImage(named: "newImage")
UIView.animate(withDuration: 0.3, animations: {
imageView?.alpha = 1.0
})
})