代码改变世界

swift开发笔记13

2017-09-06 15:51  dengchaojie_learner  阅读(181)  评论(0编辑  收藏  举报
let v: String! = str    // 疑问,后面加!,什么意思?表示这个常量一定有值

Swift控制流: 如何理解 if let 与guard?

https://www.zhihu.com/question/36448325
语法糖
func doSomething(str: String?)
{
    if let v = str
    {
        // use v to do something
    }
}
 
func doSomething(str: String?)
{
    guard let v = str else { return }

    // use v to do something
}

            // set up mask

            mask = CALayer.init()

            mask?.contents = UIImage.init(named: "twitterBird")?.cgImage

            mask?.position = window.center

            mask?.bounds = CGRect.init(x: 0, y: 0, width: 100, height: 80)

            imageView?.layer.mask = mask

 

 

func animateMask() -> Void {

        // init key frame animation

        let keyFrameAnimation = CAKeyframeAnimation.init(keyPath: "bounds")// 注意此key不是自定义的,KVO

        keyFrameAnimation.delegate = self

        keyFrameAnimation.duration = 10

        keyFrameAnimation.beginTime = CACurrentMediaTime() + 1

        

        // animate zoom in and then zoom out

        let initialBounds = NSValue.init(cgRect: (mask!.bounds))

        let secondBounds = NSValue.init(cgRect: CGRect.init(x: 0, y: 0, width: 80, height: 64))

        let finalBounds = NSValue.init(cgRect: CGRect.init(x: 0, y: 0, width: 2000, height: 2000))

        keyFrameAnimation.values = [initialBounds, secondBounds, finalBounds]

        // set up time interals

        keyFrameAnimation.keyTimes = [0, 0.3, 1]// 这是个线性时间比例,例如:0.3*10(总时间)=3,是从initialBounds到secondBounds的动画时间;

        

        // add animation to current view

        keyFrameAnimation.timingFunctions = [CAMediaTimingFunction.init(name: kCAMediaTimingFunctionEaseInEaseOut),CAMediaTimingFunction.init(name: kCAMediaTimingFunctionEaseOut)]

        mask!.add(keyFrameAnimation, forKey: "bounds")// 注意此key是自定义的,KVO

    }

 

func animationDidStop(_ anim: CAAnimation, finished flag: Bool) {

        imageView?.layer.mask = nil

    }