Ios 无论如何,要设置UIImageView的动画';将contentMode从aspectFill设置为aspectFit?
我想要一个UIImageView来调整和更改contentMode的大小,但是上面的代码不起作用。它在动画开始时立即更改了contentModeIos 无论如何,要设置UIImageView的动画';将contentMode从aspectFill设置为aspectFit?,ios,animation,uiimageview,Ios,Animation,Uiimageview,我想要一个UIImageView来调整和更改contentMode的大小,但是上面的代码不起作用。它在动画开始时立即更改了contentMode 有什么方法可以设置它的动画吗?UIImageView从UIView继承它的contentMode属性。它不是可以设置动画的属性之一。有关详细信息,请参见基于“”的。,您不能直接为contentmode设置动画。但是,您可以尝试设置帧的动画,以获得与contentmode相同的行为。动画完成后,可以将contentmode和frame设置回原始状态 Mi
有什么方法可以设置它的动画吗?
UIImageView
从UIView
继承它的contentMode
属性。它不是可以设置动画的属性之一。有关详细信息,请参见基于“”的。,您不能直接为contentmode设置动画。但是,您可以尝试设置帧的动画,以获得与contentmode相同的行为。动画完成后,可以将contentmode和frame设置回原始状态 MishieMoo是对的。contentMode无法设置动画。我认为你可以改变视图的边界来实现你想要的 要实现这一点,您可以在github上使用此组件:是的,contentMode不能设置动画,但“center”可以-在帧或边界动画不符合要求的情况下,将其用于contentMode动画模拟我认为您需要:
可以像UIImageView一样使用VICMAImageView,并在动画块中设置contentMode动画:
[UIView animateWithDuration:30.0f delay:0.0f options:UIViewAnimationOptionCurveEaseInOut animations:^{
v.contentMode = UIViewContentModeScaleAspectFit;
v.frame = v.superview.bounds;
} completion:^(BOOL finished) {
[v removeFromSuperview];
}];
正如其他人提到的,没有办法为contentMode设置动画 这个库的存在就是为了解决这个问题!
我认为,自从iOS 4.0以来,您可以使用UIView.transition(…)设置过渡动画,如中所述。在Swift 5中,它如下所示:
imageView.contentMode = .scaleAspectFit
UIView.animateWithDuration(1) {
self.imageView.contentMode = .scaleAspectFill
}
谢谢,我意识到使用uiimageview是无法做到的,所以我只想找到一种简单的方法:)那么,为帧设置动画可能是你最好的选择。我需要将其隐藏在视图下,并预先计算达到目标的位置:)这听起来像是另一个问题。我想我只能将imageview设置为子视图,然后计算位置和大小,然后制作动画谢谢!尼斯库:)在复杂的UIViewController动画转换中工作得非常出色。谢谢
imageView.contentMode = .scaleAspectFit
UIView.animateWithDuration(1) {
self.imageView.contentMode = .scaleAspectFill
}
let contentMode: UIView.ContentMode = imageView.contentMode == .scaleAspectFit ? .scaleAspectFill : .scaleAspectFit
UIView.transition(with: imageView, duration: 0.5,
options: .transitionFlipFromBottom,
animations: {
self.imageView.contentMode = contentMode
},
completion: nil)