UITableView的笔记

1.UITableView需要注册Cell之后才能调用

对于有xib文件的cell 

let nib = UINib(nibName:name,bundle,nil)
tableView.register(nib,forCellReuseIdentifier:name)

如果需要多次在不同tableview中调用这段代码

应该写一个TableVIewController 其中有一个包含这段代码的函数

之后的TVC继承这个函数 


2.要让tableview中的Cell不可被选中 应该修改cell中的selectionStyle属性 修改为.none 


由图可以看出selectionStyle主要用于修改被选中时的颜色


3. 

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat 

return section == 0 ? 0 : xxx
用于修改每个section的前部高度 默认为0 注意section为0时其前部也会有高度  为了使第一个section位于顶部 应该返回


4.对于分割线的类型 只存在none与singleLine





对于singleLine风格 没有cell的地方也会有分割线  所以一般选择none风格 然后通过calayer画图或者弄一个特别窄的uiview画一条分割线 

5.对于tableviewStyle有两种风格


.plain风格即为朴素风格 section之间没有明显分割颜色


grouped即成群的风格 分割部分的颜色较为明显




6.关于tableview 顶部留空白问题 



因为在IOS11中有了safeArea的概念 为了保证view处于safeArea中 对于tableview来说 iOS的selfsizing会自动插入大概在20px的高度在tableview的顶部 

        print(tableView.safeAreaInsets)
        print(tableView.contentInset)
        print(tableView.adjustedContentInset)

可通过这三个函数查看插入的像素值 

解决办法

1 .

禁止inset调节机制

        if #available(iOS 11.0, *) {
            tableView.contentInsetAdjustmentBehavior = .never
        } else {
            self.automaticallyAdjustsScrollViewInsets = false
        }

禁止调节机制之后 section0 的 y将为0 即最顶端位于状态栏顶部 

需要手动设置section 的头部高度 来保证视图的正确  但在IOS11中 heightForHeader函数有时不会起作用 

需要禁止view估算尺寸

        self.tableView.estimatedRowHeight = 0;
        self.tableView.estimatedSectionHeaderHeight = 0;
        self.tableView.estimatedSectionFooterHeight = 0;
最后再修改section 1 的高度 
    override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return section == 0 ? ((self.navigationController?.navigationBar.frame.height)! + UIApplication.shared.statusBarFrame.height) : 30
    }

 这里因为有navigationbar 所以其头部的高度应该为 navigationbar的高度 + 状态栏的高度 


2. 

    override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        <#code#>
    }

重写headview函数 自定义一个uiview来确保头部高度正确


3. 

tableView.contentInset

设置偏移量 



7.如何计算是否划到tableview底部

tableview位于scrollview中 

所以重写方法 scrollviewdidscroll

其中scrollview参数中有三个值

frame //当前的view大小 

contentsize  //实际内容大小

contentoffset // 视图的位移值

如果frame.height + contentoffset.height > contentsize 时 即已滑到底部


关于默认的UITableCell 

不需要register  register之后的cell Style将不可修改 

只有没register的可以更改Style   也不会出错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值