微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

UITableViewCell 的阴影被 UINavigationbar 剪掉

如何解决UITableViewCell 的阴影被 UINavigationbar 剪掉

我有以下 UIView 代码,它通过 cell.contentView.addSubview(insets) 添加到 UITableView 中的每个单元格:

import TinyConstraints


let insets = UIView()
insets.backgroundColor = .clear
let background = UIView()
background.backgroundColor = .white
background.layer.cornerRadius = 20
background.layer.shadowColor = UIColor.gray.cgColor
background.layer.shadowRadius = 16
background.layer.shadowOffset = CGSize(width: 0,height: 0)
background.layer.shadowOpacity = 0.5
/*
 More content like labels etc added to background
*/
insets.addSubview(background)
background.edgesToSuperview(insets: .horizontal(16) + .vertical(12))

这个单元格被添加一个位于 UINavigationController 内的 UITableViewController 中。 问题是第一个单元格的阴影顶部被导航栏截断:

enter image description here

当然,我可以降低 shadowRadius 和/或增加顶部第一个单元格的偏移量。但是“Home”和第一个单元格之间增加的空间看起来不太好,更小的阴影半径也不会。

所以我想知道,有没有办法让阴影“融入”导航栏?

提前致谢!

解决方法

您可以做的一件事是从这个 ViewController 中完全删除 UINavigationBar 并使用 tableHeaderView: https://developer.apple.com/documentation/uikit/uitableview/1614904-tableheaderview 创建您自己的自定义一个。这样阴影就会混合到标题中

注意:您仍然可以保留 UINavigationController,只需将主屏幕上的栏本身删除即可。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。