如何使用UIBezierPath绘制一条线?

  • 回答 (2)
  • 关注 (0)
  • 查看 (8)

第一次使用BezierPath时,想知道这个函数实际上是如何实现的。当前,Bezier路径在图像帧内移动,而不是在屏幕上绘图。

有更好的方法吗?

func drawLineFromPoint(start : CGPoint, toPoint end:CGPoint, ofColor lineColor: UIColor, inView view:UIView) {

    var maxWidth = abs(start.x - end.x)
    var maxHeight = abs(start.y - end.y)

    var contextSize : CGSize!
    if maxWidth == 0 {
        contextSize = CGSize(width: 1, height: maxHeight)
    }else {
        contextSize = CGSize(width: maxWidth, height: 1)
    }

    //design the path
    UIGraphicsBeginImageContextWithOptions(contextSize, false, 0)
    var path = UIBezierPath()
    path.lineWidth = 1.0
    lineColor.set()

    //draw the path and make visible
    path.moveToPoint(start)
    path.addLineToPoint(end)
    path.stroke()

    //create image from path and add to subview
    var image = UIGraphicsGetImageFromCurrentImageContext()
    var imageView = UIImageView(image: image)
    view.addSubview(imageView)
    UIGraphicsEndImageContext()
}
Maj_LundyMaj_Lundy提问于
愤怒的白菜PostgreSQL DBA回答于
已采纳

结果是这样做的:

func drawLineFromPoint(start : CGPoint, toPoint end:CGPoint, ofColor lineColor: UIColor, inView view:UIView) {

    //design the path
    var path = UIBezierPath()
    path.moveToPoint(start)
    path.addLineToPoint(end)

    //design path in layer
    var shapeLayer = CAShapeLayer()
    shapeLayer.path = path.CGPath
    shapeLayer.strokeColor = lineColor.CGColor
    shapeLayer.lineWidth = 1.0

    view.layer.addSublayer(shapeLayer)
}

回答过的其他问题

如何使用Serverless框架?

愤怒的白菜PostgreSQL DBA
Serverless架构本身给用户带来什么?它实际上就是允许我们更关注业务代码,因此可以更快速的构建业务然后上线。现在互联网开发速度越来越快,因此大家期望的是进一步加快开发和业务真正上线的速度,提高迭代的能力。因此,使用Serverless的话可以更快速让业务上线,让我们更快实现...... 展开详请

在OpenCV(Python)中,为什么我会从灰度图像获取3通道图像?

愤怒的白菜PostgreSQL DBA

试试这个:

 img = cv2.imread('gray.jpg',0)

0对于灰色和用于颜色

互动直播的房间数或频道数是否有上限呢?

愤怒的白菜PostgreSQL DBA

目前每客户的频道并发数上限为100 (即如果同时有100个互动直播房间同时进行旁路直播,就要全部占用这100个频道),如果有客户的并发房间数超过这个数值,主要增加频道上限,请联系QQ:3358225043 ,注明:企业+互动直播频道

如何从主要大盒子中分离颜色填充并使用正确的标签保存它们

愤怒的白菜PostgreSQL DBA
您需要解决两个问题子集。 得到彩色框的边框。 使用框索引命名它们首先我们需要裁剪与每种颜色相对应的图像。要获取Image中的颜色,请使用以下命令: unique_col = set( tuple(v) for col in image for v in col ) ...... 展开详请

加载Web组件时的事件

愤怒的白菜PostgreSQL DBA
您的更新示例是我所知道的最佳方式。 我有一个类似的问题,希望在通过标签导入CSS的组件上防止FOUC。 我能找到的唯一解决方案是根据您的更新。QS使用ShadowRoot查找<link>或者<scripts>,为每个添加一个加载事件监听器并比较加载计数。 您可能会考虑的一个优化...... 展开详请

Filestack iOS在图像上传时出现400错误“参数无效”

愤怒的白菜PostgreSQL DBA

参考https://github.com/filestack/filestack-swift/pull/12解决了我的问题。

所属标签

扫码关注云+社区