首页 > 解决方案 > Swift - 从 UIView 获取随机 CGPoints

问题描述

我正在尝试沿着 UIView 的“外轮廓”获取随机 CGPoints,以便能够在获得的 CGPoints 上绘制 UIBezierPath 线。例如,从我自己手动标记的红点下方获取 CGPoints。任何想法?

在此处输入图像描述

###Edit### 根据 Sweeper 的建议,我正在尝试将 CAShapeLayer 添加到我的自定义视图中,但是当我打印它的路径时它返回 nil。请你指出我错过了什么?

class ViewController: UIViewController {
    let shapeLayer = CAShapeLayer()
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let view = BubbleView(frame: CGRect(x: self.view.frame.midX / 2, y: self.view.frame.midY/2, width: 150, height: 100))
        view.backgroundColor = .gray
        view.layer.cornerRadius = 30
        self.view.addSubview(view)  
    }
}
class BubbleView: UIView {

    var pathLayer: CAShapeLayer!

    override func layoutSubviews() {
        pathLayer = CAShapeLayer()
        pathLayer.bounds = frame
        self.layer.addSublayer(pathLayer)
        print(pathLayer.path) // returns nil
    }
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        backgroundColor = .clear
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
}

标签: swiftuibezierpathcgpoint

解决方案


推荐阅读