由于我们的设计师是一个虐待狂,我有一个带有分段控件的 UITableView,它可以在单独的提要中的两种不同类型的单元格之间切换。单元格使用不同的标识符和类进行出队——这一切都很好。单元格共享一个父级,但大小不同,出于优化原因,我layer.shadowpath
在父级的 layoutSubviews() 中手动设置。我需要阴影:设计师的愿望。
问题是,在我切换到第二部分之后,在桌子下方的一些地方,我认为上面的单元格有阴影悬垂。正如您从第一张图片中看到的那样,有两个阴影,如果我向下滚动以遮挡最顶部的可见单元格,阴影就会消失,这让我相信阴影是偏移的。进一步滚动会使这些阴影消失,并且在再次切换选项卡之前不会再次出现。其余的阴影都很好。
两个影子
稍微向下滚动
当切换回上一个选项卡时,单元格较高,也存在阴影问题,但这些阴影太短了。如前所述,设置阴影路径的代码在父类中,父类负责制作和布置包含自定义 subCells 的最顶层“卡片”视图。
我以编程方式做所有事情:设置视图和自动布局。当前单元高度是硬编码的。我不确定哪些信息是相关的,因为我完全不知所措,所以这是我设置shadowPath
.
override func layoutSubviews() {
super.layoutSubviews()
cardView.layer.shadowPath = UIBezierPath(rect: cardView.bounds).CGPath
}
为简单起见,卡片contentView
采用以下视觉格式进行布局:
"V:|-marginV-[card]-marginV-|"
"H:|-marginH-[card]-marginH-|"