在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) } }