问题描述
我有以下 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 中。 问题是第一个单元格的阴影顶部被导航栏截断:
当然,我可以降低 shadowRadius 和/或增加顶部第一个单元格的偏移量。但是“Home”和第一个单元格之间增加的空间看起来不太好,更小的阴影半径也不会。
所以我想知道,有没有办法让阴影“融入”导航栏?
提前致谢!
解决方法
您可以做的一件事是从这个 ViewController 中完全删除 UINavigationBar
并使用 tableHeaderView
: https://developer.apple.com/documentation/uikit/uitableview/1614904-tableheaderview 创建您自己的自定义一个。这样阴影就会混合到标题中
注意:您仍然可以保留 UINavigationController
,只需将主屏幕上的栏本身删除即可。