2017-07-21 49 views
1

我试图做一个很酷的启动屏幕,但它是一个有点硬。我想提出我的图像显示的方式,这似乎:使UIImage的出现从左至右

what I would like

但是现在我成功做的唯一动画是这样的:

what I've made

我使用的图片带有透明边框的PNG和黄色的绘图。

我用有动画我 代码(“yellowSide”实际上是从ImageView的持有我的形象用黄色绘制的出口名称):

func animation() { 
    yellowSide.frame = CGRect(x: yellowSide.frame.origin.x, y: yellowSide.frame.origin.y, width: 0, height: 47) 
    yellowSide.alpha = 0 

    UIView.animate(withDuration: 0.5, delay: 2.0, options: .curveEaseIn, animations: { 
     var yellowSideFrame = self.yellowSide.frame 
     self.yellowSide.frame = CGRect(x: yellowSideFrame.origin.x, y: yellowSideFrame.origin.y, width: 243, height: 47) 
     self.yellowSide.alpha = 1 

    }, completion: nil) 
} 

正如你猜我输入的宽度/值是我需要的值,因此当图像完全出现时,图像看起来就是我想要的。

+1

这是错误的做法,以达到你想要做什么,'UIBezierPath'并设置描边 – Dhiru

+0

好吧,我这会搜索看看有什么可以帮我!感谢 – Leo

+0

@Leo你可以达到你想要什么样的UIImageView通过不同设置内容模式。但是,这仍然不是实现你想要的正确方式。 –

回答

2

你正在改变框架,但你不剪辑出帧图像。你需要像下面这样做。

// in ViewDidLoad method 
    yellowSide.clipsToBounds=true 

func animation() { 
    yellowSide.frame = CGRect(x: yellowSide.frame.origin.x, y: yellowSide.frame.origin.y, width: 0, height: 47) 
    yellowSide.alpha = 0 

    UIView.animate(withDuration: 0.5, delay: 2.0, options: .curveEaseIn, animations: { 

       var yellowSideFrame = self.yellowSide.frame 
       self.yellowSide.frame = CGRect(x: yellowSideFrame.origin.x, y: yellowSideFrame.origin.y, width: 243, height: 47) 
       self.yellowSide.alpha = 1 

      }, completion: nil) 

}