特殊阴影:Swift 2
Special drop shadow: Swift 2
在下图中,我有两种类型的阴影。
在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 文件,但如果我必须转换文件格式,那就不会太麻烦了。
像这样的东西应该可以工作:
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
}
您可能需要 fiddle 与 offset
、shadowOpacity
和 shadowRadius
多一点才能尽可能接近,但这些值非常好当我在本地调试时关闭。
此外,您不需要同时执行 view.clipsToBounds
和 view.layer.masksToBounds
。这些几乎可以互换,如果你设置了一个,另一个应该会自动更新。
这里就把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
}
在下图中,我有两种类型的阴影。
在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 文件,但如果我必须转换文件格式,那就不会太麻烦了。
像这样的东西应该可以工作:
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
}
您可能需要 fiddle 与 offset
、shadowOpacity
和 shadowRadius
多一点才能尽可能接近,但这些值非常好当我在本地调试时关闭。
此外,您不需要同时执行 view.clipsToBounds
和 view.layer.masksToBounds
。这些几乎可以互换,如果你设置了一个,另一个应该会自动更新。
这里就把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
}