我希望能够以对角方式为我的UIImageView背景设置动画。意味着背景将动画并从屏幕的左上角向屏幕的右下方滚动。理想情况下,这将是一个连续的动画。
我已经指出了方向,然而,我所拥有的似乎只是背景和副本的副本。在静态背景上制作动画。这会产生奇怪的效果。
请参阅gif:
以下是代码:
List<String> numbers = form.getValues().split(",");
是否有人能够弄清楚如何使整个背景滚动?我只需要一个更大的图像,并滚动它?如果是这种情况,那么需要将imageView的contentMode设置为什么?
由于
----更新
我已经重新编写了一些代码,并且有一个我想要的工作版本。我对一些反馈很好奇,因为我对动画一般都不是100%感到满意(但我正在学习!:)
- 我删除了整个背景图片,因为DuncanC认为它没有达到一个好的目的。现在,我只是制作一个图像层,尝试制作足够大的图像,然后循环播放动画。想法?
var imageView = UIImageView()
override func viewDidLoad() {
super.viewDidLoad()
self.setup();
}
func setup() {
self.imageView.frame = self.view.bounds
self.imageView.image = UIImage(named: "myimage.jpg")
self.view.addSubview(self.imageView)
self.scroll()
}
func scroll() {
var theImage = UIImage(named: "myimage.jpg")!
var pattern = UIColor(patternImage: theImage)
var layer = CALayer()
layer.backgroundColor = pattern.CGColor
layer.transform = CATransform3DMakeScale(1,-1,1)
layer.anchorPoint = CGPointMake(0, 1)
var viewSize = self.imageView.bounds.size
layer.frame = CGRectMake(0,0, theImage.size.width + viewSize.width, viewSize.height)
self.imageView.layer.addSublayer(layer)
var startPoint = CGPointZero
var endPoint = CGPointMake(theImage.size.width, theImage.size.height + 15)
var animation = CABasicAnimation(keyPath: "position")
animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
animation.fromValue = NSValue(CGPoint:startPoint)
animation.toValue = NSValue(CGPoint:endPoint)
animation.repeatCount = Float.infinity
animation.duration = 1.0
layer.addAnimation(animation, forKey: "position")
}
**结果:*
答案 0 :(得分:1)
你的代码没有多大意义。您有一个包含图像myimage.jpg的图像视图,然后您创建一个包含该图像作为图案颜色的CALayer。您可以将图层添加到图像视图中并为其设置动画。
只需使用UIView动画并直接为图像视图的中心设置动画。如果您正在使用AutoLayout,那么您需要添加水平和垂直位置约束,将它们连接为IBOutlets,然后在动画块中更改约束并在图像视图上调用layoutIfNeeded()
&# 39; s superview。