绘制圆线iOS Swift

Posted

技术标签:

【中文标题】绘制圆线iOS Swift【英文标题】:draw rounded lines iOS Swift 【发布时间】:2019-02-18 19:35:57 【问题描述】:

我正在尝试制作一个绘制分形树的应用程序。我设法制作了从所有行生成所有起点和终点的代码。我也设法画出线条,但现在它们真的很方正,希望它们有圆角。 我使用 UIView 并使用 UIBezierPaths 在视图绘制函数中绘制线条。为了检索点,我在一个 sigleton 类中有一个 Branch 对象数组。分支对象有一个起点和终点,它们都是元组( (x: Double, y: Double) )。

    override func draw(_ rect: CGRect) 
    super.draw(rect)
    UIColor.blue.setStroke()
    for branch in Tree.shared.branches
        let path = UIBezierPath()
        print(branch.startingPoint)
        print(branch.endingPoint)
        path.move(to: CGPoint(x: branch.startingPoint.x, y: branch.startingPoint.y))
        path.addLine(to: CGPoint(x: branch.endingPoint.x, y: branch.endingPoint.y))
        path.lineWidth = 3
        path.stroke()
    


我怎样才能使角落变圆?

另外,如果有人知道一个可以帮助实现这一点的免费图书馆,我也很感兴趣。

编辑:我对如何生成树不感兴趣,我已经完成了这部分代码,我需要帮助绘制线条。

【问题讨论】:

【参考方案1】:

你不需要一个库,你只需要花一点时间学习如何用UIBezierPath绘制曲线,曲线是该课程最擅长的事情之一。绘制曲线的关键是了解控制点的工作原理。 Here's an answer前段时间写过关于如何平滑连接曲线,我觉得会有所帮助。玩弄-addCurveToPoint:controlPoint1:controlPoint2:

如果您实际上并不想要曲线,而只是想要圆角而不是尖角,那么您只需将lineJoinStyle 设置为kCGLineJoinRound

【讨论】:

lineJoinStyle 没有(我猜是因为所有行都是单独的路径)但我使用了lineCapStyle 并且它有效,但是无论如何控制“拐角半径”?无论如何感谢您的帮助。【参考方案2】:

关于某些视图的圆角,只需设置以下参数:

func adjustView(_ view: UIView)
     view.layer.borderWidth = 2.0
     view.layer.borderColor = UIColor.red
     view.layer.cornerRadius = 10
     view.clipsToBounds      = true
     view.backgroundColor = UIColor.white
    

如果您想了解更多信息,请查看有关图层属性的当前文档: https://developer.apple.com/documentation/uikit/uiview/1622436-layer

【讨论】:

我试图圆角而不是视图。 对。我发现另一个问题的这个答案可能对你有用。 ***.com/questions/13719143/… 我只想圆角而不是整行。但我使用 UIBezierPath 的 lineCapStyle 属性使其工作。 我发现了另一种使用 CAShapeLayer() 和 UIBezierPath() 的方法。但是命令是在视图中实例化的。可能你可以检查参数。 ***.com/questions/32031633/…

以上是关于绘制圆线iOS Swift的主要内容,如果未能解决你的问题,请参考以下文章

拖动并缩放使用 UIBezierPath IOS/Swift 绘制的矩形

怎么在MATLAB里面用矩阵画一个圆线?不是实心的圆,是圆线~~求助~~

UIBezierPath 绘制 iOS Swift 的性能更好?

在 iOS 中使用核心图形上下文绘制圆 - Objective-C 或 Swift

iOS 编程中, 如何使用 Swift 和 CAGradientLayer 绘制这个矩形

如何在 iOS Swift4 中创建这个圆形?