UIView+Ex.swift 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. //
  2. // UIView+Ex.swift
  3. // KittensTravelNotes
  4. //
  5. // Created by 100Years on 2025/7/6.
  6. //
  7. public extension UIView {
  8. // 部分圆角(必须Frame已知)
  9. func makeCorner(_ corners: UIRectCorner, radius: CGFloat) {
  10. let path = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
  11. let maskLayer = CAShapeLayer()
  12. maskLayer.frame = bounds
  13. maskLayer.path = path.cgPath
  14. layer.mask = maskLayer
  15. }
  16. /// 给 view 增加阴影
  17. /// - Parameters:
  18. /// - cornerRadius: 视图圆角
  19. /// - shadowColor: 阴影颜色
  20. /// - shadowOffset: 阴影偏移量
  21. /// - shadowRadius: 阴影扩散距离
  22. /// - shadowOpacity: 阴影透明度
  23. @discardableResult
  24. public func addShadow(shadowColor: CGColor?,
  25. shadowOffset: CGSize,
  26. shadowRadius: CGFloat,
  27. shadowOpacity: Float){
  28. layer.shadowColor = shadowColor
  29. layer.shadowOffset = shadowOffset
  30. layer.shadowOpacity = shadowOpacity
  31. layer.shadowRadius = shadowRadius
  32. }
  33. /// 增加渐变背景,需要先确定当前 view 的 frame
  34. /// - Parameters:
  35. /// - colors: 渐变背景颜色数组
  36. /// - startPoint: 渐变启示位置
  37. /// - endPoint: 渐变结束位置
  38. /// - layerSize: 指定 layer 的 size,否则和自己当前一样大
  39. public func addGradientBg(colors: [CGColor],
  40. startPoint: CGPoint = .zero,
  41. endPoint: CGPoint = CGPoint(x: 1, y: 1),
  42. layerSize: CGSize? = nil) {
  43. let gl = CAGradientLayer()
  44. gl.colors = colors
  45. gl.startPoint = startPoint
  46. gl.endPoint = endPoint
  47. gl.frame = CGRect(origin: .zero, size: layerSize ?? self.bounds.size)
  48. gl.zPosition = -1 // 将 gradientLayer 放在底层
  49. layer.insertSublayer(gl, at: 0)
  50. }
  51. }
  52. public extension UIView {
  53. func removeAllSubViews() {
  54. subviews.forEach { subview in
  55. subview.removeFromSuperview()
  56. }
  57. }
  58. }