如何高性能添加UIView陰影

原文鏈接:How to add a shadow to a View 

 

iOS 能夠動態的爲任何UIView添加陰影,這些陰影是自動適應元素的形狀,即使像UILabel這種文本曲線, 陰影功能是內置在UIView中的。你只需要關心和設置他的屬性就ok啦

有如下常用相關屬性(針對UILayer層的):

  • shadowColor: 設置陰影的顏色,必須是CGColor類型的。
  • shadowOpacity: 設置過渡透明的,值在0~1
  • shadowOffset: 設置陰影與view的距離,給出3D偏移感(我的理解是相當於中心點的偏移)默認值(0,-3)
  • shadowRadius:  陰影半徑

下面有一些示例代碼:

let yourView = UIView()  // 創建一個UIView
yourView.layer.shadowColor = UIColor.black.cgColor  // 設置背景顏色
yourView.layer.shadowOpacity = 1 // 設置透明度
yourView.layer.shadowOffset = .zero  // 設置偏移
yourView.layer.shadowRadius = 10  // 設置半徑

注意:由於需要圍繞內容形狀設置陰影,動態生成非常消耗GPU資源, 所以建議設置shadowPath的值,以便不用動態計算,下面有一個好的例子【有效避免離屏渲染】:

yourView.layer.shadowPath = UIBezierPath(rect: yourView.bounds).cgPath  // 設置路徑

同是告訴 iOS 緩存渲染陰影,使得不用重新繪製(設置光柵化)

yourView.layer.shouldRasterize = true  // 設置光柵化緩存

如果你設置的光柵化緩存,同是你應該設置光柵化比例(rasterizationScale),以保證和屏幕的scale一致,不然會有像素差別(不清晰)。

yourView.layer.rasterizationScale = UIScreen.main.scale  //設置光柵化比例

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章