[英]Special drop shadow: Swift 2
在下圖中,我有兩種陰影。
快速地,我使用了以下功能:
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陰影與Web的效果匹配?
我正在使用.png文件,但是如果我不得不轉換文件格式,那就不會做太多的工作了。
在這里,只需將view.layer.shadowOffset視為二維坐標系的第四象限。 因此,如果該值為CGSizeMake(0,0) ,則陰影將平均分布在所有側面。
現在view.layer.shadowRadius只是陰影的半徑或范圍。 通過更改其值,陰影長度將更改。
view.layer.shadowOpacity將更改陰影的暗度。 其值從0變為1。
假設我們將shadowOffset設置為CGSizeMake(5,0)並將shadowRadius設置為小於5的值 ,則陰影將移動到對象的右側,而在其他側面將沒有任何陰影。 假設值為CGSizeMake(0,5) ,則陰影將在對象的底部,即,它將向下移動5個點,並且在另一側沒有任何陰影。 因此,如果value為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
}
這樣的事情應該起作用:
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
。 這些幾乎可以互換,如果您設置了一個,則另一個應自動更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.