问题描述
正如我在标题中提到的,要求是绘制多条可以播放的线条,这有点类似于photoshop中的钢笔工具,具有一些新的自定义功能。而且它们必须能够存储
当前,我正在使用UIBezierPath并设法添加了一些功能,例如可存储的多行,可伸缩...
但是现在我在如何拖放方面遇到了麻烦,我做了一些研究和类似的尝试,除非我必须添加很多玩cgPoint
之类的东西,否则这是不可能的,这将使它变得更难被存储,我什至不知道它是否行得通。
即使具有下一个功能,也可以通过握住线的尖端来延伸线并拉伸,这也需要大量的工作(我计划删除当前线,并根据其2个尖端的位置重新绘制)。
所以我想知道是否有更好的方法来处理像类这样的方法,该类具有与我的相似或更易于创建的功能。
这是我当前的代码(我打算使用cgpoint
保存多条路径,并且我想通过按住touchPoint
来扩展该行
override func touchesBegan(_ touches: Set<UITouch>,with event: UIEvent?) {
print("came here")
let touch = event?.alltouches?.first
var startPoint:CGPoint?
var endPoint:CGPoint?
var dotStartPointX:CGPoint?
var dotStartPointY:CGPoint?
var dotEndPointX:CGPoint?
var dotEndPointY:CGPoint?
if let originalPoint = touch?.location(in: self) {
startPoint = CGPoint(x: originalPoint.x - 70,y: originalPoint.y)
endPoint = CGPoint(x: originalPoint.x + 70,y: originalPoint.y)
dotStartPointX = CGPoint(x: startPoint!.x,y: startPoint!.y - dotLinesize)
dotStartPointY = CGPoint(x: startPoint!.x,y: startPoint!.y + dotLinesize)
dotEndPointX = CGPoint(x: endPoint!.x,y: endPoint!.y - dotLinesize)
dotEndPointY = CGPoint(x: endPoint!.x,y: endPoint!.y + dotLinesize)
}
drawLineFromPoint(start: startPoint!,toPoint: endPoint!,ofColor: fillColor,inView: self)
drawLineFromPoint(start: dotStartPointX!,toPoint: dotStartPointY!,inView: self)
drawLineFromPoint(start: dotEndPointX!,toPoint: dotEndPointY!,inView: self)
drawCircle(point: startPoint!)
drawCircle(point: endPoint!)
}
func drawCircle(point: CGPoint) {
let radius = dotLinesize + 5
let circlePath = UIBezierPath(arcCenter: point,radius: radius,startAngle: CGFloat(0),endAngle: CGFloat(Double.pi * 2.0),clockwise: true)
let shapeLayer = CAShapeLayer()
shapeLayer.path = circlePath.cgPath
shapeLayer.fillColor = fillColor.cgColor
shapeLayer.strokeColor = fillColor.cgColor
shapeLayer.opacity = 0.5
self.layer.addSublayer(shapeLayer)
}
func drawLineFromPoint(start : CGPoint,toPoint end:CGPoint,ofColor lineColor: UIColor,inView view:UIView) {
//design the path
var path = UIBezierPath()
path.move(to: start)
path.addLine(to: end)
//design path in layerr
var shapeLayer = CAShapeLayer()
shapeLayer.path = path.cgPath
shapeLayer.strokeColor = lineColor.cgColor
shapeLayer.linewidth = 3.0
view.layer.addSublayer(shapeLayer)
}
我明白了(无论用户在哪里点击,在两个提示处画一条带有2个点的线:
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)