Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 画一条线连接两个圆_Ios_Swift_Uiview_Quartz 2d - Fatal编程技术网

Ios 画一条线连接两个圆

Ios 画一条线连接两个圆,ios,swift,uiview,quartz-2d,Ios,Swift,Uiview,Quartz 2d,我正在构建一个定制的用户界面输入,让用户通过一条线连接两个圆圈 这就是原型的样子 我想知道我怎样才能画出这条直线?你的观点?斯皮特基特?或者什么?您应该使用UIBezierPath()和CAShapeLayer() 此函数应实现以下功能: 您应该使用UIBezierPath()和CAShapeLayer() 此函数应实现以下功能: 无缓存版本: class LineView:UIView { var startP: CGPoint? var endP: CGPoint?

我正在构建一个定制的用户界面输入,让用户通过一条线连接两个圆圈

这就是原型的样子


我想知道我怎样才能画出这条直线?你的观点?斯皮特基特?或者什么?

您应该使用
UIBezierPath()
CAShapeLayer()

此函数应实现以下功能:
您应该使用
UIBezierPath()
CAShapeLayer()

此函数应实现以下功能: 无缓存版本:

class LineView:UIView {

    var startP: CGPoint?
    var endP: CGPoint?

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        let touch = touches.first
        let location = touch?.locationInView(self);

        //do some matching here...

        self.startP = location
    }

    override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
        let touch = touches.first
        let location = touch?.locationInView(self);
        self.endP = location
        self.setNeedsDisplay()
    }

    override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
        let touch = touches.first
        let location = touch?.locationInView(self);

        //do some matching here...

        self.endP = location
        self.setNeedsDisplay()
    }

    override func drawRect(rect: CGRect) {
        let context = UIGraphicsGetCurrentContext()

        if let start = self.startP {
            if let end = self.endP {
                CGContextMoveToPoint(context, start.x, start.y)
                CGContextAddLineToPoint(context, end.x, end.y)
                CGContextSetStrokeColorWithColor(context, UIColor.blueColor().CGColor)
                CGContextStrokePath(context)
            }
        }
    }
}
类线视图:UIView{
var startP:CGPoint?
var endP:CGPoint?
覆盖功能触摸开始(触摸:设置,withEvent事件:UIEvent?){
让我们先接触
让位置=触摸?.locationInView(自);
//在这里做一些匹配。。。
self.startP=位置
}
覆盖功能触摸移动(触摸:设置,带事件:UIEvent?){
让我们先接触
让位置=触摸?.locationInView(自);
self.endP=位置
self.setNeedsDisplay()
}
覆盖func touchesEnded(触摸:设置,withEvent事件:UIEvent?){
让我们先接触
让位置=触摸?.locationInView(自);
//在这里做一些匹配。。。
self.endP=位置
self.setNeedsDisplay()
}
重写func drawRect(rect:CGRect){
let context=UIGraphicsGetCurrentContext()
如果let start=self.startP{
如果let end=self.endP{
CGContextMoveToPoint(上下文,start.x,start.y)
CGContextAddLineToPoint(上下文,end.x,end.y)
CGContextSetStrokeColorWithColor(上下文,UIColor.blueColor().CGColor)
CGContextStrokePath(上下文)
}
}
}
}
无缓存版本:

class LineView:UIView {

    var startP: CGPoint?
    var endP: CGPoint?

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        let touch = touches.first
        let location = touch?.locationInView(self);

        //do some matching here...

        self.startP = location
    }

    override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
        let touch = touches.first
        let location = touch?.locationInView(self);
        self.endP = location
        self.setNeedsDisplay()
    }

    override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
        let touch = touches.first
        let location = touch?.locationInView(self);

        //do some matching here...

        self.endP = location
        self.setNeedsDisplay()
    }

    override func drawRect(rect: CGRect) {
        let context = UIGraphicsGetCurrentContext()

        if let start = self.startP {
            if let end = self.endP {
                CGContextMoveToPoint(context, start.x, start.y)
                CGContextAddLineToPoint(context, end.x, end.y)
                CGContextSetStrokeColorWithColor(context, UIColor.blueColor().CGColor)
                CGContextStrokePath(context)
            }
        }
    }
}
类线视图:UIView{
var startP:CGPoint?
var endP:CGPoint?
覆盖功能触摸开始(触摸:设置,withEvent事件:UIEvent?){
让我们先接触
让位置=触摸?.locationInView(自);
//在这里做一些匹配。。。
self.startP=位置
}
覆盖功能触摸移动(触摸:设置,带事件:UIEvent?){
让我们先接触
让位置=触摸?.locationInView(自);
self.endP=位置
self.setNeedsDisplay()
}
覆盖func touchesEnded(触摸:设置,withEvent事件:UIEvent?){
让我们先接触
让位置=触摸?.locationInView(自);
//在这里做一些匹配。。。
self.endP=位置
self.setNeedsDisplay()
}
重写func drawRect(rect:CGRect){
let context=UIGraphicsGetCurrentContext()
如果let start=self.startP{
如果let end=self.endP{
CGContextMoveToPoint(上下文,start.x,start.y)
CGContextAddLineToPoint(上下文,end.x,end.y)
CGContextSetStrokeColorWithColor(上下文,UIColor.blueColor().CGColor)
CGContextStrokePath(上下文)
}
}
}
}

CAShapeLayer
将是最简单的。这里有一个问题如何使用UIBezierPath绘制线条:
CAShapeLayer
将是最简单的。这里有一个问题如何使用UIBezierPath绘制线条:谢谢。此函数将在两点之间绘制静态线。我正在寻找从一个点到另一个点的交互线。所以,在从起点拖动到手指所在的当前点时,每帧都要绘制交互线?谢谢。此函数将在两点之间绘制静态线。我在寻找从一个点到另一个点的交互线。那么,在从起点拖动到手指所在的当前点时,每一帧都要绘制交互线?