Ios 如何创建材质的阴影,如表格视图单元格?
我试图使我的表视图单元格看起来“材质”。这里有一些类似于我想做的事情(): 请注意,上图中整个表视图周围有一个阴影。我想要的是阴影,但应用于每个表视图单元格,而不是整个表视图 我首先在XIB文件中设计了我的手机。我将名为Ios 如何创建材质的阴影,如表格视图单元格?,ios,swift,calayer,shadow,Ios,Swift,Calayer,Shadow,我试图使我的表视图单元格看起来“材质”。这里有一些类似于我想做的事情(): 请注意,上图中整个表视图周围有一个阴影。我想要的是阴影,但应用于每个表视图单元格,而不是整个表视图 我首先在XIB文件中设计了我的手机。我将名为containerView的UIView作为内容视图的子视图。我添加了约束,以便containerView的上、下、左、右边距为8。这是因为containerView比content视图小一点,所以我放在它上面的阴影是可见的 我还添加了一个名为label的UILabel作为co
containerView
的UIView
作为内容视图的子视图。我添加了约束,以便containerView
的上、下、左、右边距为8。这是因为containerView
比content视图小一点,所以我放在它上面的阴影是可见的
我还添加了一个名为label
的UILabel
作为containerView
的子视图来显示一些文本
这是UITableViewCell
子类:
class QueueItemCell: UITableViewCell {
@IBOutlet var label: UILabel!
@IBOutlet var container: UIView!
override func setHighlighted(_ highlighted: Bool, animated: Bool) {
...
}
override func setSelected(_ selected: Bool, animated: Bool) {
...
}
override func awakeFromNib() {
container.layer.shadowColor = UIColor.black.cgColor
container.layer.shadowOpacity = 0.7
container.layer.shadowOffset = CGSize(width: 3, height: 9)
container.layer.shadowRadius = 4
container.layer.cornerRadius = 4
container.layer.shadowPath = UIBezierPath(roundedRect: container.bounds, cornerRadius: 4).cgPath
selectionStyle = .none
}
}
数据源和委托方法没有什么特别之处,只是我在heightForRowAt
中将单元格的高度设置为61
当我运行应用程序时,我得到了如下结果:
底部和左侧边缘的阴影非常好。但右翼是一场彻底的灾难。顶部边缘也没有阴影,这是不需要的。我试着用阴影路径
和阴影偏移量
进行反复试验,但总有一条或两条边缘看起来不好
如何在单元格的所有边缘上实现阴影,如第一幅图像所示?在
awakeFromNib
中,您的视图大小错误。您需要将container.layer.shadowPath=UIBezierPath(roundedRect:container.bounds,cornerRadius:4)。cgPath
移动到layoutSubviews
或删除此代码
container.layer.shadowPath = UIBezierPath(roundedRect: container.bounds, cornerRadius: 4).cgPath
因此,将自动配置阴影我认为您不需要阴影路径来添加简单阴影。将其移动到
layoutSubviews
会产生与以前相同的结果,但删除它并将shadowOffset
更改为0会起作用。我从来不知道阴影路径是可选的!您还可以尝试UIBezierPath(rect:)
而不是UIBezierPath(roundedRect:)