Swift,swiftcode

來源:互聯網
上載者:User

Swift,swiftcode

Swift - CALayer的contents屬性動畫

 

效果

 

源碼

https://github.com/YouXianMing/Swift-Animations

////  LiveImageView.swift//  Swift-Animations////  Created by YouXianMing on 16/8/17.//  Copyright © 2016年 YouXianMing. All rights reserved.//import UIKit// MARK: Public class : LiveImageViewclass LiveImageView: UIImageView {        // MARK: Properties.        /// Animation's duration.    var duration : CFTimeInterval = 0.3        // MARK: Methods.        /**     Set image with animation or not.          - parameter newVal:   The new image.     - parameter animated: Animated or not.     */    func setImage(newVal : UIImage, animated : Bool) {                if animated == true {                        let animation       = CABasicAnimation(keyPath: "contents")            animation.fromValue = image?.CGImage            animation.toValue   = newVal.CGImage            animation.duration  = duration                        pLayer.contents = image?.CGImage            pLayer.addAnimation(animation, forKey: nil)                        image = newVal                    } else {                        image = newVal        }    }        // MARK: Private value & func.        private var pLayer : CALayer!        override init(frame: CGRect) {                super.init(frame: frame)        pLayer = layer    }        required init?(coder aDecoder: NSCoder) {                fatalError("init(coder:) has not been implemented")    }}
////  LiveImageViewController.swift//  Swift-Animations////  Created by YouXianMing on 16/8/17.//  Copyright © 2016年 YouXianMing. All rights reserved.//import UIKitclass LiveImageViewController: NormalTitleViewController {        var timer  : GCDTimer!  = GCDTimer(inQueue: GCDQueue.mainQueue)    var count  : NSInteger! = 0    var images : [UIImage]! = [UIImage]()        override func setup() {                super.setup()                images = [UIImage]()        images.append(UIImage(named: "pic_1")!)        images.append(UIImage(named: "pic_2")!)        images.append(UIImage(named: "pic_3")!)        images.append(UIImage(named: "pic_4")!)                let image                       = images[0]        let liveImageView               = LiveImageView(frame: CGRectMake(0, 0, image.size.width, image.size.height))        liveImageView.center            = (contentView?.middlePoint)!        liveImageView.layer.borderWidth = 3        liveImageView.layer.borderColor = UIColor.blackColor().CGColor        liveImageView.duration          = 0.5        contentView?.addSubview(liveImageView)                weak var wself = self        timer.event({                        let currentIndex = (wself?.count)! % (wself?.images.count)!            wself?.count     = (wself?.count)! + 1                        liveImageView.setImage(wself!.images[currentIndex], animated: true)                        UIView.animateWithDuration(0.5, animations: {                                var tmpRect          = liveImageView.bounds                tmpRect.size         = (liveImageView.image?.size)!                liveImageView.bounds = tmpRect                liveImageView.center = (wself?.contentView?.middlePoint)!            })                        }, timeIntervalWithSeconds: 1.0)                timer.start()    }}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.