在UIView上绘制点和线

根据我在Apple Swift 网站上find的一个例子,我给自己一个学习Swift的练习:

在这里输入图像说明

正如你所看到的,中间有一条河stream和一些点,形成一条小路。 所以我开始在互联网上寻找类似的河stream图像,并创build了一个Xcode游乐场。 这是我现在所拥有的:

在这里输入图像说明

所以基本上我有一个UIView子视图,包括我find的河stream图像和用UIBezierPath制作的点。

我的第一个问题是:这是正确的方式来绘制到UIView? 我的意思是使用UIBezierPath 。 而我的第二个问题是:如何在UIView内的精确坐标上绘制点? ( UIBezierPath或其他一切?)

为了更加精确,我的意图是制定一个algorithm,使程序识别图像,并根据像素颜色,从河stream的起点到终点画一条线,从中间穿过。

要在UIView上绘制UIBezierPath ,请执行以下操作:

 let xCoord = 10 let yCoord = 20 let radius = 8 let dotPath = UIBezierPath(ovalInRect: CGRectMake(xCoord, yCoord, radius, radius)) let layer = CAShapeLayer() layer.path = dotPath.CGPath layer.strokeColor = UIColor.blueColor().CGColor drawingView.layer.addSublayer(layer) 

此代码将绘制半径为8,坐标为10,20的圆点。

这是对等式的一部分的尝试:

  var offset:CGFloat = 0; var squareWidth:Int = 20 var squareRows:Int = Int(view.frame.size.width/CGFloat(squareWidth)) var squareColumns:Int = Int(view.frame.size.height/CGFloat(squareWidth)) for (index,element) in (0...squareRows).enumerate(){ for (column,element) in (0...squareColumns).enumerate(){ // Build The Square let rectanglePath = UIBezierPath(roundedRect: CGRectMake( view.frame.minX + CGFloat(squareWidth * index) - offset, view.frame.minY + CGFloat(column * squareWidth), 20, 20 ), cornerRadius: 0.00) // Style Square let a = CAShapeLayer() a.path = rectanglePath.CGPath a.strokeColor = UIColor.whiteColor().CGColor a.fillColor = nil a.opacity = 0.3 a.lineWidth = 1.5 view.layer.insertSublayer(a, atIndex: 1) } } 

视图用图层渲染