我ImageView
中有UIViewController
:
我想为此图像设置动画,定期更改宽度和高度。如果单击“扫描代码”,您可以在Iphone上的Apple Wallet应用程序中看到相同的动画。我尝试了很多,但我的代码工作不正确或应用程序在3-5分钟后开始滞后......
这是我的最后一段代码:
class ViewController: UIViewController {
@IBOutlet weak var focusImage: UIImageView!
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.resizeFocusImageUp()
}
func resizeFocusImageUp() {
UIView.animateWithDuration(2.0, delay: 0.0, options: UIViewAnimationOptions.CurveEaseIn, animations: {
self.focusImage.frame = CGRectMake(
self.focusImage.frame.origin.x+50,
self.focusImage.frame.origin.y-50,
self.focusImage.frame.size.width-50,
self.focusImage.frame.size.height+50
)
self.view.layoutIfNeeded()
self.view.bringSubviewToFront(self.focusImage)
}, completion: {(Bool) in
self.resizeFocusImageDown()
})
}
func resizeFocusImageDown() {
UIView.animateWithDuration(2.0, delay: 0.0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
self.focusImage.frame = CGRectMake(
self.focusImage.frame.origin.x-50,
self.focusImage.frame.origin.y+50,
self.focusImage.frame.size.width+50,
self.focusImage.frame.size.height-50
)
self.view.layoutIfNeeded()
self.view.bringSubviewToFront(self.focusImage)
}, completion: {(Bool) in
self.resizeFocusImageUp()
})
}
}
答案 0 :(得分:2)
正如另一张海报所说,如果你正在使用AutoLayout,那么你需要设置约束的动画,而不是框架。
为高度和高度创建约束您需要在动画中移动视图的宽度和位置。然后从CONSTRAINTS控制拖动到视图控制器的标题中以创建出口。
然后在动画块中更改每个约束的常量值,然后调用layoutIfNeeded来触发动画。 (关键部分是对layoutIfNeeded的调用需要在动画块内。似乎实际上导致约束改变视图的大小/位置。)
所有这一切,对于您在帖子中显示的线条图,使用CAShapeLayer和动画图层路径会更好。你可以获得更加清晰的形状,动画非常流畅。
答案 1 :(得分:1)
//在我的应用程序中正确使用Objective-C代码。根据您的要求做你的东西。
注意:如果您对该对象使用自动分析(图像视图),请在视图中添加以下两行代码。执行加载方法。
imageView.translatesAutoresizingMaskIntoConstraints = YES;
imageView.frame = CGRectMake(x, y, width, height);
//Method For Zoom IN Animations Of View
-(void)ZoomInAnimationOfView{
imageView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.01, 0.01);
[UIView animateWithDuration:1.0 animations:^{
imageView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, 1.0);
} completion:^(BOOL finished) {
imageView.transform = CGAffineTransformIdentity;
}];
}
//缩小动画的方法
-(void)ZoomOutAnimationOfView{
imageView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, 1.0);
[UIView animateWithDuration:1.0 animations:^{
imageView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.001, 0.001);
} completion:^(BOOL finished) {
imageView.transform = CGAffineTransformIdentity;
}];
}