ios - 如何用 UIBezierPath 绘制锯齿线?

标签 ios objective-c uikit drawing

我有 2 个已知的 CGPoints,我想在这两个点之间制作一条锯齿状的之字形线。我知道点之间的距离,以及大约要制作多少条线,这是根据距离动态设置的。

任何指导将不胜感激。

最佳答案

以下是我最近为实现此效果而编写的 swift 代码示例。此示例将 View 作为输入并对其应用之字形效果。您可以引用代码创建两个点的效果。

func applyZigZagEffect(givenView: UIView) {
    let width = givenView.frame.size.width
    let height = givenView.frame.size.height

    let givenFrame = givenView.frame
    let zigZagWidth = CGFloat(7)
    let zigZagHeight = CGFloat(5)
    let yInitial = height-zigZagHeight

    var zigZagPath = UIBezierPath()
    zigZagPath.moveToPoint(CGPointMake(0, 0))
    zigZagPath.addLineToPoint(CGPointMake(0, yInitial))

    var slope = -1
    var x = CGFloat(0)
    var i = 0
    while x < width {
        x = zigZagWidth * CGFloat(i)
        let p = zigZagHeight * CGFloat(slope)
        let y = yInitial + p
        let point = CGPointMake(x, y)
        zigZagPath.addLineToPoint(point)
        slope = slope*(-1)
        i++
    }
    zigZagPath.addLineToPoint(CGPointMake(width, 0))

    var shapeLayer = CAShapeLayer()
    shapeLayer.path = zigZagPath.CGPath
    givenView.layer.mask = shapeLayer
}

您可以调整 zigZagWidth 和 zigZagHeight 以获得您选择的效果。

关于ios - 如何用 UIBezierPath 绘制锯齿线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26520596/

相关文章:

ios - 我们可以在发布时在 iTunes Connect 中保持相同的版本号吗?

ios 快速写入流

swift - 为 UIButton 添加模糊效果

ios - '重新加载'与 WKWebView 中的 'reloadFromOrigin'

ios - 从一个viewController调用另一个 View Controller 的IBAction

ios - 在长按 uiTableView IOS 上更改单元格的选择

ios - addSubview 的内存泄漏故障排除

ios - 使用自动布局设置此 UI

ios - 如何以编程方式获取 iphone 的 MAC 地址

ios - 自定义大小 UIModalPresentationFormSheet 在键盘显示时返回默认大小