iOS26适配UITableView的分割线

116 阅读1分钟

iOS26的分割线比iOS18要粗很多

截屏2025-10-31 10.09.10.png 利用视图检查器发现,iOS26的分割线高度为1,如下图:

image.png 但在iOS18上高度是0.33,如下图:

image.png

如何解决呢,代码如下:

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    cell.selectionStyle = .none
    if #available(iOS 26.0, *) {
        DispatchQueue.main.async {
            cell.subviews.last?.frame.size.height = 1 / UIScreen.main.scale
        }
    }
}

为什么要用DispatchQueue.main.async,因为如果不用的话,获取到的cell.subviews.count == 3,利用DispatchQueue.main.async获取到的cell.subviews.count == 4cell.subviews.last就是分割线了