zoukankan      html  css  js  c++  java
  • swift纯代码自定义UITableViewCell —— Swift

    swift纯代码自定义UITableViewCell —— Swift

    今天学习一下用swift纯代码进行自定义UITableViewCell顺便自己做个笔记,其实用swift自定义tableViewCell的思想和Object-c是一样的,画重点那就直接上代码了:

    自定义tableViewCell的部分:

    import UIKit
    
    class FirstCustomTableCell: UITableViewCell {
    
        let imageView_W = 120.0//w:h = 4:3
        let imageView_H = 90.0
        let subView_interval:CGFloat = 10.0
        
        var leftImageView : UIImageView?
        var nameLabel     : UILabel?
        var subNameLabel  : UILabel?
        var timeLabel     : UILabel?
        var browseLabel   : UILabel?
        
        required init?(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
        }
        override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
            super.init(style: style, reuseIdentifier: reuseIdentifier)
            self.selectionStyle = UITableViewCellSelectionStyle.none
            
            self.createCellUI()
        }
        
        func createCellUI(){
            
            leftImageView = UIImageView.init(frame : CGRect(x:15.0,y:5.0,imageView_W,height:imageView_H))
            leftImageView!.backgroundColor = UIColor.lightGray
            self.contentView.addSubview(leftImageView!)
            leftImageView?.image = UIImage(named: "leftImg1.jpg")
            
            //name
            nameLabel = UILabel.init(frame: CGRect(x:Max_X(object:leftImageView!) + subView_interval,y:subView_interval,SCREEN_WIDTH - Max_X(object:leftImageView!) - 2 * subView_interval,height:25.0))
            nameLabel?.textColor = UIColor.darkText
            nameLabel?.font = UIFont.systemFont(ofSize: 18)
            nameLabel?.text = "世界杯开幕";
            self.contentView.addSubview(nameLabel!)
            
            subNameLabel = UILabel.init(frame: CGRect(x:X(object:nameLabel!),y:Max_Y(object: nameLabel!) + 5,W(object: nameLabel!),height:25))
            subNameLabel?.textColor = UIColor.darkGray
            subNameLabel?.font = UIFont.systemFont(ofSize: 15)
            subNameLabel?.text = "世界杯开幕";
            self.contentView.addSubview(subNameLabel!)
            
            timeLabel = UILabel.init(frame: CGRect(x:X(object:nameLabel!),y:100-25,W(object: subNameLabel!) * 0.6,height:20))
            timeLabel?.textColor = UIColor.lightGray
            timeLabel?.font = UIFont.systemFont(ofSize: 13)
            timeLabel?.text = "2018-01-01 10:58"
            self.contentView.addSubview(timeLabel!)
            
            browseLabel = UILabel.init(frame: CGRect(x:Max_X(object: timeLabel!),y:Y(object: timeLabel!),W(object: subNameLabel!) * 0.4,height:20))
            browseLabel?.textAlignment = NSTextAlignment.right
            browseLabel?.textColor = UIColor.lightGray
            browseLabel?.font = UIFont.systemFont(ofSize: 13)
            browseLabel?.text = "浏览:"+"50"
            self.contentView.addSubview(browseLabel!)
        }
        
        override func awakeFromNib() {
            super.awakeFromNib()
            // Initialization code
        }
        
        override func setSelected(_ selected: Bool, animated: Bool) {
            super.setSelected(selected, animated: animated)
    
            // Configure the view for the selected state
        }
    
    }
    

    在VC中对cell进行注册:

    import UIKit
    
    class FirstCustomTableCellVc: UIViewController,UITableViewDelegate,UITableViewDataSource {
    
        let cell_identifier:String = "FirstCustomTableCell"
        var myTableView = UITableView()
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view.
            self.navigationItem.title = "自定义TableViewCell"
            self.creatViewUI()
        }
        
        func creatViewUI(){
            
            self.myTableView = UITableView.init(frame: self.view.bounds, style: UITableViewStyle.plain)
            self.myTableView.tableFooterView = UIView.init()
            self.myTableView.delegate = self
            self.myTableView.dataSource = self
            self.view .addSubview(self.myTableView)
            
            self.myTableView.register(FirstCustomTableCell.classForCoder(), forCellReuseIdentifier: cell_identifier)
        }
        
        func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            
            return 10
        }
        
        func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
            return 100
        }
        
        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            
            let customCell = tableView.dequeueReusableCell(withIdentifier: cell_identifier, for: indexPath)
            
            return customCell
        }
        
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
        
    
        /*
        // MARK: - Navigation
    
        // In a storyboard-based application, you will often want to do a little preparation before navigation
        override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
            // Get the new view controller using segue.destinationViewController.
            // Pass the selected object to the new view controller.
        }
        */
    
    }
    

     最后实现的效果如下图:

     代码中用到的几个自定义的获取view的frame的函数是我进行的一个简单的自定义可以参考下面的文件,后续会用swift专门写一个类目用于view的frame参数的获取和重置:

     FrameUtils.swift.zip

  • 相关阅读:
    shell脚本-awk
    shell脚本-sed命令
    shell脚本-grep和正则表达式
    wuti
    dmesg、stat命令
    uname、hostname命令
    tee、vi/vim命令
    tr、od命令
    vimdiff、rev命令
    dos2unix、diff命令
  • 原文地址:https://www.cnblogs.com/Rong-Shengcom/p/9309553.html
Copyright © 2011-2022 走看看