Swift之自定义UITableViewCell

主要是在重写父类的init(style:UITableViewCellStyle,reuseIdentifier:String?)中添加要实现的部分,比如下面在cell中添加几个Label,获取改变原有cell中subViews子控件的位置坐标、字体颜色、背景颜色等等。

import UIKit

class HomeTableViewCell: UITableViewCell {

    var addressView:UIView?
    
    var addressLabel:UILabel?
    var distanceLabel:UILabel?
    
    required init?(coder aDecoder:NSCoder) {
        super.init(coder: aDecoder)
    }
    
    override init(style:UITableViewCellStyle,reuseIdentifier:String?) {
        
        super.init(style: style,reuseIdentifier: reuseIdentifier)
        self.setUpUI();
    }
    
    func setUpUI()
    {
        self.addressView = UIView(frame: CGRect(x: 0,y: 0,width: SCREEN_WIDTH,height: 25))
        self.addressLabel = UILabel(frame: CGRect(x: 0,width: 200,height: 25))
        self.addressLabel?.textColor = UIColor.lightGray
        self.addressLabel?.font = UIFont.systemFont(ofSize: 15)
        self.distanceLabel = UILabel(frame: CGRect(x: 0,width: 100,height: 25))
        self.distanceLabel?.textColor = UIColor.lightGray
        self.distanceLabel?.font = UIFont.systemFont(ofSize: 15)
        self.distanceLabel?.textAlignment = .right
        
        self.addressView?.addSubview(self.addressLabel!)
        self.addressView?.addSubview(self.distanceLabel!)
        
        self.addSubview(self.addressView!)
        
        self.detailTextLabel?.textColor = UIColor.lightGray
        
    }
    
    override func layoutSubviews() {
        super.layoutSubviews()
        
        //        let imgHeight:CGFloat = (self.imageView?.frame.size.height)!
        //        let imgyy:CGFloat = (self.bounds.size.height - imgHeight * 0.9)/2
        //        var imgRect = self.imageView?.frame
        //        imgRect?.origin.y = imgyy
        //        imgRect?.size = CGSize(width: imgHeight * 0.9,height: imgHeight * 0.9)
        //        self.imageView?.frame = imgRect!
        //
        //        self.imageView?.layer.borderWidth = 0.3
        //        self.imageView?.layer.borderColor = UIColor.white.cgColor
        //        self.imageView?.layer.cornerRadius = imgHeight/2
        let cellHeight = self.bounds.size.height
        
        //detailTextLabel origin y
        var detailLabelRect = self.detailTextLabel?.frame
        let detailY = (cellHeight - (detailLabelRect?.size.height)!) / 2
        detailLabelRect?.origin.y = detailY
        self.detailTextLabel?.frame = detailLabelRect!
        
        //textLabel rect
        var textRect = self.textLabel?.frame
        textRect?.origin.y = detailY - 5 - (textRect?.size.height)!
        self.textLabel?.frame = textRect!
        
        //addressView rect
        let addrViewX = detailLabelRect?.origin.x
        let addrViewY = (detailLabelRect?.origin.y)! + (detailLabelRect?.size.height)! + 3
        let addrViewWidth = SCREEN_WIDTH - addrViewX!
        
        
        self.addressView?.frame = CGRect(x: addrViewX!,y: addrViewY,width: addrViewWidth,height: 25)
        let disLabelX = (self.addressLabel?.frame.size.width)! - 110
        var disLabelRect = self.distanceLabel?.frame
        
        disLabelRect?.origin.x = disLabelX
        
        self.distanceLabel?.frame = disLabelRect!
        
        
        
    }



    override func setSelected(_ selected: Bool,animated: Bool) {
        super.setSelected(selected,animated: animated)

        // Configure the view for the selected state
    }

}

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...