Swift-Automatically expand cells when you click UITableView cells

Source: Internet
Author: User

The following is a demo of the collapse spread effect of cell cell. When you click a cell, the cell expands to show some details. Clicking on another cell will turn off the original and animate.


The effect is as follows:

The code is as follows:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 66676869707172737475767778798081828384858687888990 import UIKitclass ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {        var tableView:UITableView?        var ctrlnames:[String] = ["UILabel 标签","UIButton 按钮","UIDatePiker 日期选择器",        "UITableView 表格视图"]        var selectedCellIndexPath:NSIndexPath!         override func viewDidLoad() {        super.viewDidLoad()                //创建表视图        self.tableView = UITableView(frame: UIScreen.mainScreen().applicationFrame,            style:UITableViewStyle.Plain)        self.tableView!.delegate = self        self.tableView!.dataSource = self        //创建一个重用的单元格        self.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: "SwiftCell")        self.view.addSubview(self.tableView!)    }        //在本例中,只有一个分区    func numberOfSectionsInTableView(tableView: UITableView!) -> Int {        return 1;    }        //返回表格行数(也就是返回控件数)    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {        return self.ctrlnames.count    }        //创建各单元显示内容(创建参数indexPath指定的单元)    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)        -> UITableViewCell    {        var label =  UILabel(frame:CGRectZero)        label.setTranslatesAutoresizingMaskIntoConstraints(false)        label.text = self.ctrlnames[indexPath.row]                var textview=UITextView(frame:CGRectZero)        textview.setTranslatesAutoresizingMaskIntoConstraints(false)        textview.textColor = UIColor.grayColor()        //演示效果,暂时写死        textview.text = "UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,"                let identify:String = "SwiftCell"        var cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier:identify)        //自动遮罩不可见区域,超出的不显示        cell.layer.masksToBounds = true        cell.contentView.addSubview(label)        cell.contentView.addSubview(textview)                //创建一个控件数组        var views:NSMutableDictionary = NSMutableDictionary()        views.setValue(label, forKey: "label")        views.setValue(textview, forKey: "textview")        cell.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat(            "H:|-15-[label]-15-|", options: nil, metrics: nil, views: views))        cell.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat(            "H:|-15-[textview]-15-|", options: nil, metrics: nil, views: views))        cell.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat(            "V:|[label(40)]", options: nil, metrics: nil, views: views))        cell.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat(            "V:|-40-[textview(80)]", options: nil, metrics: nil, views: views))        return cell    }        // UITableViewDelegate 方法,处理列表项的选中事件    func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!)    {        self.tableView!.deselectRowAtIndexPath(indexPath, animated: false)        selectedCellIndexPath = indexPath        // Forces the table view to call heightForRowAtIndexPath        tableView!.reloadRowsAtIndexPaths([indexPath],            withRowAnimation: UITableViewRowAnimation.Automatic)            }       //点击单元格会引起cell高度的变化,所以要重新设置    func tableView(tableView: UITableView,        heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {            if(selectedCellIndexPath != nil && selectedCellIndexPath == indexPath){                return 120            }            return 40    }}

Swift-Automatically expand cells when you click UITableView cells

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

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.