swift微博第17天(UITableViewCell的自定义)

简介: swift微博第17天(UITableViewCell的自定义)

第一步:简历一个 HomelTableViewCell.swift 继承于UITableViewCell

import UIKit
 class HomelTableViewCell: UITableViewCell {
 var label:UILabel?
 override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
 }
 override init(style: UITableViewCellStyle, reuseIdentifier: String?)     
 {
    super.init(style: style, reuseIdentifier: reuseIdentifier)
    self.setUpUI();
 }
 func setUpUI(){
    self.label = UILabel()
    self.label?.x = 12
    self.label?.width = JKscreenW-24
    self.label?.y = 0
    self.label?.textColor = UIColor.black
    self.label?.font = UIFont.systemFont(ofSize: 14)
    self.label?.numberOfLines = 0
    //self.label?.backgroundColor = UIColor.JKRandomColor()
    self.contentView.addSubview(self.label!)
 }
 required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
 }
 override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)
    // Configure the view for the selected state
 }
}

第二步: 在控制器里面创建tableview

lazy var tableview : UITableView = {
    // tabview的创建,遵守协议是用逗号 "," 来实现的
    let tableview = UITableView()
    // tableview�的frame的设置
    tableview.frame = CGRect(x:0,y:64,width:JKscreenW,height:JKscreenH-64-49)
    // tableview的背景色
    tableview.backgroundColor = UIColor.brown
    // tableview挂代理
    tableview.delegate = self
    tableview.dataSource = self
    // tableview的分割方式
    tableview.separatorStyle = UITableViewCellSeparatorStyle.none
    return tableview
}()

第三步: 在控制器里面创建添加tableview和定义cell的标识符以及cell里面的数组model

self.view.addSubview(self.tableview)
 private let HomereuseIdentifier = "HomereuseIdentifier"
 // 用于保存微博数组(这个是一个技巧,在给homeViewModels赋值时刷新数据)
 [HomeViewModel]是一个model的数组套字典
 var homeViewModels: [HomeViewModel]?
 {
    didSet{
        self.tableview.reloadData()
    }
 }

第四步:实现tableView的代理方法实现

// MARK: 苹果官方推荐将数据源代理方法单独写到一个拓展方法里面,以便提高代码的可读性
 // extension: 相当于OC里面的 category 这样代码更简洁
 extension  HomeViewController:UITableViewDelegate,UITableViewDataSource{
 // MARK: tableView段里面的 段落 数
 func numberOfSections(in tableView: UITableView) -> Int {
    return 1
 }
 // MARK: tableView段里面的 行 数
 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return homeViewModels?.count ?? 0
 }
 // MARK: tableView cell 的设置
 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    var cell = tableView.dequeueReusableCell(withIdentifier: HomereuseIdentifier) as?  HomelTableViewCell
    if cell == nil {
        cell = HomelTableViewCell(style:UITableViewCellStyle.default, reuseIdentifier: HomereuseIdentifier)
        cell?.selectionStyle = UITableViewCellSelectionStyle.none
    }
    let model = homeViewModels![indexPath.row]
    cell?.label?.text = model.text
    cell?.label?.height = NSString.JKtextStringHeight(string: model.text! as NSString, size: CGSize(width:JKscreenW-24,height:1000), fontSize: 14)
    cell?.backgroundColor = UIColor.JKRandomColor()
    return cell!
 }
 // MARK: tableView 的点击事件
 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    print("\(indexPath.section)段,\(indexPath.row)行")
 }
 // MARK: tableView cell 的高度返回值
 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    let model = homeViewModels![indexPath.row]
    return NSString.JKtextStringHeight(string: model.text! as NSString, size: CGSize(width:JKscreenW-24,height:1000), fontSize: 14)
 }
}


目录
相关文章
|
3月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户点击按钮时,按钮将从圆形变为椭圆形,颜色从蓝色渐变到绿色;释放按钮时,动画以相反方式恢复。通过UIView的动画方法和弹簧动画效果,实现平滑自然的过渡。
94 1
|
4月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
【10月更文挑战第18天】本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户按下按钮时,按钮将从圆形变为椭圆形并从蓝色渐变为绿色;释放按钮时,动画恢复原状。通过UIView的动画方法和弹簧动画效果,实现平滑自然的动画过渡。
78 5
|
9月前
|
Swift 图形学 iOS开发
【Swift开发专栏】Swift中的自定义视图与绘制
【4月更文挑战第30天】本文探讨了Swift中自定义视图的创建与绘制,分为基础知识、绘制步骤和性能优化三部分。开发者通过继承`UIView`,重写`draw(_:)`方法并利用Core Graphics进行2D绘图。提高性能的技巧包括避免重复绘制、使用轻量级视图、优化图形上下文使用、启用图层背板及避免阻塞主线程。自定义视图让iOS和macOS界面更独特高效,进阶可探索Core Animation和Metal等技术。
112 0
|
Swift
Swift -banner滚动图自定义
Swift -banner滚动图自定义
256 0
Swift -banner滚动图自定义
|
Swift
Swift - 自定义tabbar的封装
Swift - 自定义tabbar的封装
366 0
Swift - 自定义tabbar的封装
|
Swift
Swift之自定义Button
Swift之自定义Button
245 0
Swift之自定义Button
|
SQL 存储 Oracle
swift微博第25天(SQLite)
swift微博第25天(SQLite)
230 0
swift微博第25天(SQLite)
|
Swift
swift微博第21天(图片选择器)
swift微博第21天(图片选择器)
494 0
swift微博第21天(图片选择器)
|
Swift
swift微博第15天(新版的判断以及跟控制器的切换)
swift微博第15天(新版的判断以及跟控制器的切换)
186 0
swift微博第15天(新版的判断以及跟控制器的切换)
|
Swift
Swift5.1—自定义运算符
Swift5.1—自定义运算符
157 0