Swift,swiftcode

來源:互聯網
上載者:User

Swift,swiftcode

Swift - UITableView展開縮放動畫

 

效果

 

源碼

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

////  HeaderViewTapAnimationController.swift//  Swift-Animations////  Created by YouXianMing on 16/8/9.//  Copyright © 2016年 YouXianMing. All rights reserved.//import UIKitclass HeaderViewTapAnimationController: NormalTitleViewController, UITableViewDelegate, UITableViewDataSource {        private var classes           : [ClassModel]!    private var tableView         : UITableView!    private var sectionFirstLoad  : Bool!    private weak var tmpHeadView  : ClassHeaderView!        override func setup() {                super.setup()                sectionFirstLoad = false                // TableView.        tableView                     = UITableView(frame: (contentView?.bounds)!)        tableView.dataSource          = self        tableView.delegate            = self        tableView.rowHeight           = 60        tableView.sectionHeaderHeight = 30        tableView.separatorStyle      = .None        contentView?.addSubview(tableView!)                // Register.        ClassHeaderView.registerToTableView(tableView)        StudentInfoCell.registerToTableView(tableView)                // Data source.        let Aitna    = ClassModel(className: "Aitna")        Aitna.expend = false        Aitna.students?.append(StudentModel(name: "Y.X.M.",  age: 27))        Aitna.students?.append(StudentModel(name: "Leif",    age: 12))        Aitna.students?.append(StudentModel(name: "Lennon",  age: 23))        Aitna.students?.append(StudentModel(name: "Jerome",  age: 19))        Aitna.students?.append(StudentModel(name: "Isidore", age: 15))                let Melete    = ClassModel(className: "Melete")        Melete.expend = false        Melete.students?.append(StudentModel(name: "Merle",  age: 17))        Melete.students?.append(StudentModel(name: "Paddy",  age: 31))        Melete.students?.append(StudentModel(name: "Perry",  age: 59))        Melete.students?.append(StudentModel(name: "Philip", age: 23))                let Aoede    = ClassModel(className: "Aoede")        Aoede.expend = false        Aoede.students?.append(StudentModel(name: "Verne",   age: 12))        Aoede.students?.append(StudentModel(name: "Vincent", age: 89))        Aoede.students?.append(StudentModel(name: "Walter",  age: 43))        Aoede.students?.append(StudentModel(name: "Zachary", age: 21))        let Dione    = ClassModel(className: "Dione")        Dione.expend = false        Dione.students?.append(StudentModel(name: "Timothy",  age: 72))        Dione.students?.append(StudentModel(name: "Roderick", age: 34))        Dione.students?.append(StudentModel(name: "Quentin",  age: 12))        Dione.students?.append(StudentModel(name: "Paddy",    age: 75))                let Adanos    = ClassModel(className: "Adanos")        Adanos.expend = false        Adanos.students?.append(StudentModel(name: "Mortimer", age: 43))        Adanos.students?.append(StudentModel(name: "Michael",  age: 64))        Adanos.students?.append(StudentModel(name: "Kevin",    age: 23))        Adanos.students?.append(StudentModel(name: "Jeremy",   age: 21))                classes = [ClassModel]()        classes.append(Aitna)        classes.append(Melete)        classes.append(Aoede)        classes.append(Dione)        classes.append(Adanos)                // Expend animations.        GCDQueue.executeInMainQueue({                         self.sectionFirstLoad = true            self.tableView.insertSections(NSIndexSet(indexesInRange: NSMakeRange(0, self.classes.count)), withRowAnimation: .Fade)                        GCDQueue.executeInMainQueue({                                self.tmpHeadView.buttonEvent()                                }, afterDelaySeconds: 0.4)            }, afterDelaySeconds: 0.3)    }        // MARK: UITableView's delegate & dataSource.        func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {                let classModel = classes[section]        if classModel.expend == true {                        return (classModel.students?.count)!                    } else {                    return 0        }    }        func numberOfSectionsInTableView(tableView: UITableView) -> Int {                if sectionFirstLoad == false {                        return 0                    } else {                    return classes.count        }    }        func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {                let classModel       = classes[indexPath.section]        let customCell       = tableView.dequeueReusableCellWithIdentifier("StudentInfoCell") as! CustomCell        customCell.data      = classModel.students![indexPath.row]        customCell.indexPath = indexPath        customCell.loadContent()                return customCell    }        func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {                tableView.selectedEventWithIndexPath(indexPath)    }        func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {                let headerView       = tableView.dequeueReusableHeaderFooterViewWithIdentifier("ClassHeaderView") as! ClassHeaderView        headerView.section   = section        headerView.data      = classes[section]        headerView.tableView = tableView        headerView.loadContent()                if tmpHeadView == nil && section == 0 {                        tmpHeadView = headerView        }                return headerView    }}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.