美文网首页
8.1、UItableView

8.1、UItableView

作者: 艾希_可可 | 来源:发表于2018-06-27 11:50 被阅读4次

    import UIKit

    class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {
    let ScreenWidth = UIScreen.main.bounds.width
    let ScreenHeight = UIScreen.main.bounds.height
    let imageArray = [["wd-zcfb", "wd-sy"], ["wd-zhye", "wd-zjbg"], ["wd-hd", "wd-wdxx","帮助中心"], ["wd-mdb", "wd-ddc", "wd-xfd", "wd-cbd", "wd-mcd"]]
    let titleArray = [["我的资产", "我的收益"], ["账户余额", "资金变更"], ["我的活动", "我的消息","帮助中心"], ["债转", "袋袋存", "小福袋", "大福袋", "直投"]]
    override func viewDidLoad() {
    super.viewDidLoad()
    self.createFirstTableView()
    }
    func createFirstTableView() {
    let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: ScreenWidth, height: ScreenHeight), style: .plain)//.plain组头会默认悬停grouped组头跟着列表一起滚动
    self.view.addSubview(tableView)
    tableView.delegate = self
    tableView.dataSource = self
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return imageArray[section].count
    }
    //行高
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 50
    }
    func numberOfSections(in tableView: UITableView) -> Int {
    return imageArray.count
    }
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 15
    }
    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let view = UIView(frame: CGRect(x: 0, y: 0, width: ScreenWidth, height: 10))
    view.backgroundColor = UIColor(red: 0.97, green: 0.97, blue: 0.97, alpha: 1)
    return view
    }
    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return 0.01
    }
    func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    let view = UIView(frame: CGRect(x: 0, y: 0, width: ScreenWidth, height: 0.01))
    return view
    }
    // func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    // return 10
    // }
    // func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    // let headView = UIView(frame: CGRect(x: 0, y: 0, width: ScreenWidth, height: 30))
    // headView.backgroundColor = UIColor.lightGray
    // let label = UILabel(frame: CGRect(x: 0, y: 0, width: ScreenWidth, height: 30))
    // headView.addSubview(label)
    // label.text = "热门店铺>>"
    // label.textAlignment = .right
    // return headView
    // }
    // func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    // if section == 0 {
    // return "春天"
    // }else if section == 1{
    // return "夏天"
    // }
    // return "秋天"
    // }
    // func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
    // print("将要显示头部调用的函数")
    // }
    //预估tableView的高度
    // 当高度变成自适应后不代表你就需要在关注单元格的高度, Apple 的官方文档强调 estimatedRowHeight 设置得越精确越好. 因为系统需要利用 estimatedRowHeight 来计算滚动条的高度和位置等数据. 如果你提供的预估高度跟实际问题就可以导致一些滚动上的问题, 影响用户体验.
    // func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
    // return 150
    // }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let identifier = "first"//cell的标注符
    var cell = tableView.dequeueReusableCell(withIdentifier: identifier)//代码写的这样写,xib画的后面加indexpath
    if cell == nil {
    cell = UITableViewCell(style: .value1, reuseIdentifier: identifier)
    }
    //数据显示
    cell?.textLabel?.numberOfLines = 0
    // cell?.imageView?.image = UIImage(named: "(imageArray[indexPath.section][indexPath.row])")
    cell?.textLabel?.text = "(titleArray[indexPath.section][indexPath.row])"
    cell?.detailTextLabel?.text = "0.00"
    //cell的基本属性
    cell?.accessoryType = .disclosureIndicator
    // cell?.selectionStyle = .none

    // 图片处理
    let size = CGSize(width: 30, height: 30)
    let image = UIImage(named: "(imageArray[indexPath.section][indexPath.row])")
    // 参数size为新创建的位图上下文的大小 opaque—透明开关,如果图形完全不用透明,设置为YES以优化位图的存储 scale—–缩放因子 这里需要判断一下UIGraphicsBeginImageContextWithOptions是否为NULL,因为它是iOS 4.0才加入的
    UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
    let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height)
    image?.draw(in: rect)
    cell?.imageView?.image = UIGraphicsGetImageFromCurrentImageContext()//IGraphicsGetImageFromCurrentImageContext函数返回的图形大小。该函数的功能同UIGraphicsBeginImageContextWithOptions
    return cell!
    }
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    //选中时手指离开的动画
    tableView.deselectRow(at: indexPath, animated: true)
    }
    override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
    }
    }

    相关文章

      网友评论

          本文标题:8.1、UItableView

          本文链接:https://www.haomeiwen.com/subject/uejbyftx.html