在下图中,我有两种类型的阴影。
在swift中,我使用过这个功能:
func applyShadow(view: UIView){
view.layer.shadowColor = UIColor.blackColor().CGColor
view.layer.shadowOffset = CGSizeMake(0, 1)
view.layer.shadowOpacity = 0.5
view.layer.shadowRadius = 10.0
view.clipsToBounds = false
view.layer.masksToBounds = false
}
将阴影应用于图像视图中的图像。
如何修改applyShadow函数以使iOS阴影与网络效果相匹配?
我使用.png文件,但如果我必须转换文件格式,那就不会有太多工作。
答案 0 :(得分:2)
这里只想到 view.layer.shadowOffset 作为二维坐标系的第四象限。因此,如果该值为 CGSizeMake(0,0),则阴影将在所有边均匀分布。
现在 view.layer.shadowRadius 只是阴影的半径或范围。通过更改其值,阴影长度将会改变。
view.layer.shadowOpacity 会改变阴影的黑暗。它的值从0变为1.
假设我们将 shadowOffset设置为CGSizeMake(5,0)并将 shadowRadius设置为小于5 ,则阴影将移动到对象的右侧,在其他方面不会有任何阴影。假设值为 CGSizeMake(0,5),阴影将位于对象的底部,即它将向下移动5个点并且在其他边不会有任何阴影。因此,如果值 CGSizeMake(5,5),阴影将向左下方向移动5个点。
我认为您对此有了更好的理解。所以当回到你的问题时,我认为这将有效:
func applyShadow(view: UIView){
view.layer.shadowColor = UIColor.blackColor().CGColor
view.layer.shadowOffset = CGSizeMake(8, 12)
view.layer.shadowOpacity = 0.4
view.layer.shadowRadius = 5.0
}
答案 1 :(得分:1)
这样的事情应该有效:
func applyShadow(view: UIView){
let offset = CGSize(width: 150, height: 150)
let path = UIBezierPath()
path.move(to: CGPoint(x: 0, y: 0))
path.addLine(to: CGPoint(x: view.frame.size.width, y: 0))
path.addLine(to: CGPoint(x: view.frame.size.width + offset.width, y: view.frame.size.height))
path.addLine(to: CGPoint(x: view.frame.size.width + offset.width, y: view.frame.size.height + offset.height))
path.addLine(to: CGPoint(x: view.frame.size.width, y: view.frame.size.height + offset.height))
path.addLine(to: CGPoint(x: 0, y: view.frame.size.height))
path.addLine(to: CGPoint(x: 0, y: 0))
view.layer.shadowColor = UIColor.black.cgColor
view.layer.shadowPath = path.cgPath
view.layer.shadowOpacity = 0.2
view.layer.shadowRadius = 2.0
view.layer.masksToBounds = false
}
您可能需要稍微调整一下offset
,shadowOpacity
和shadowRadius
以尽可能接近,但是当我在本地调试时,这些值非常接近。
此外,您不需要同时执行view.clipsToBounds
和view.layer.masksToBounds
。这些是可以互换的,如果你设置一个,另一个应该自动更新。