pujiaxin33 / JXPagingView

类似微博主页、简书主页等效果。多页面嵌套,既可以上下滑动,也可以左右滑动切换页面。支持HeaderView悬浮、支持下拉刷新、上拉加载更多。
MIT License
2.89k stars 557 forks source link

安全边距问题 #467

Open forkdog opened 1 year ago

forkdog commented 1 year ago

安全边距问题,请求修改下JXPagingView.swift

    open func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath)
        cell.selectionStyle = .none
        cell.backgroundColor = UIColor.clear
        if listContainerView.superview != cell.contentView {
            cell.contentView.addSubview(listContainerView)
        }
        if listContainerView.frame != cell.contentView.bounds {
            listContainerView.frame = cell.contentView.bounds
        }
        return cell
    }

版本号 1.JXPagingView版本号:2.1.2 2.OC还是Swift版本:swift

wkjCoder commented 1 year ago

OC版本同样遇到底部留白问题,考虑或许也是安全边距问题

Tory-Xu commented 1 year ago

@forkdog 通过这种方式修改部分系统上还是会存在问题。

场景:竖屏切换到横屏 系统:iPhone 11 iOS 14.1(模拟器), iPhone 13 iOS 15.6.1(真机) - - 个人使用设备情况 注:iPhone 14 iOS 16.0 模拟器正常

在上述设备的情况下,在竖屏切换到横屏的过程中,tableView 的 layoutSubview 方法会被执行,此时在 cellForRow 中获取到 cell.contentView.frame 包含安全区域的空间;在横竖屏结束之后,contentView.frame 会发生变化,减少了左右安全区域的宽度。而 contentView frame 变化时不会重新调整 listContainerView 的 frame,最后 listContainerView 的大小会出现错误。

我的解决方案: 这里的布局方式替换成约束布局

ebamboo commented 1 year ago

iOS 16.1 下运行会出现底部空白,iOS14.1下运行正常显示

ebamboo commented 1 year ago

底部空白的高度应该是安全区域的底部间距,所以多计算了一次距离导致底部留白

pujiaxin33 commented 1 month ago

参考swift版本demo中的【列表是VC示例】,给list tableView设置tableView.contentInsetAdjustmentBehavior = .never,就不会有底部的安全边距。