对角动画UIImageView

时间:2015-07-13 22:10:36

标签: ios iphone swift uiimageview uikit

我希望能够以对角方式为我的UIImageView背景设置动画。意味着背景将动画并从屏幕的左上角向屏幕的右下方滚动。理想情况下,这将是一个连续的动画。

我已经指出了方向,然而,我所拥有的似乎只是背景和副本的副本。在静态背景上制作动画。这会产生奇怪的效果。

请参阅gif:enter image description here

以下是代码:

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")

}

**结果:* enter image description here

1 个答案:

答案 0 :(得分:1)

你的代码没有多大意义。您有一个包含图像myimage.jpg的图像视图,然后您创建一个包含该图像作为图案颜色的CALayer。您可以将图层添加到图像视图中并为其设置动画。

只需使用UIView动画并直接为图像视图的中心设置动画。如果您正在使用AutoLayout,那么您需要添加水平和垂直位置约束,将它们连接为IBOutlets,然后在动画块中更改约束并在图像视图上调用layoutIfNeeded()&# 39; s superview。