美文网首页
swift 使用UIBezierPath实现圆角和阴影

swift 使用UIBezierPath实现圆角和阴影

作者: 瓊胖子 | 来源:发表于2020-09-03 18:03 被阅读0次

    开发中我们经常会使用到阴影,一般情况下我们直接使用layer属性直接进行设置,例如:

    阴影.png
     let view=UIView.init()
     view.backgroundColor=UIColor.white
     view=UIColor.white
     view.layer.borderWidth = 0.3
     view.layer.borderColor = UIColor.groupTableViewBackground.cgColor
     view.layer.shadowColor=UIColor.black.cgColor     
     view.layer.shadowOpacity=0.1
     view.layer.shadowRadius=5
     view.layer.shadowOffset=CGSize(width: 0, height: 0)
     view.layer.cornerRadius = 50
     view.layer.masksToBounds=true
    

    出于内存和性能考虑,还是尽量使用UIBezierPath进行绘制圆角和阴影

    import UIKit
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            let view=UIView.init(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
            view.backgroundColor=UIColor.red
            shadow(shadowV: view)
            self.view.addSubview(view)
        }
        func shadow(shadowV: UIView) {
            shadowV.layer.shadowColor = UIColor.gray.cgColor
            shadowV.layer.shadowOffset = CGSize.init(width: 0, height: 0)
            shadowV.layer.shadowOpacity = 0.8//阴影透明度
            shadowV.layer.shadowRadius = 8//阴影半径
            //切圆角
            shadowV.layer.cornerRadius = 50
            //路径阴影
            let path = UIBezierPath.init(roundedRect: shadowV.bounds, byRoundingCorners: .allCorners, cornerRadii: CGSize.init(width: 50, height: 50))
            //设置阴影路径
            shadowV.layer.shadowPath = path.cgPath
        }
    }
    
    注:代码中的roundedRect必须保证可以获取到固定的位置和大小,不然是没有效果的~

    如果有问题,欢迎指正~

    相关文章

      网友评论

          本文标题:swift 使用UIBezierPath实现圆角和阴影

          本文链接:https://www.haomeiwen.com/subject/ikeosktx.html