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