8.1、UItableView

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)