Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.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 为什么可以';当我将UIView子类化时,我是否在图像上绘制?_Ios_Swift_Uiview_Uiimageview_Uipangesturerecognizer - Fatal编程技术网

Ios 为什么可以';当我将UIView子类化时,我是否在图像上绘制?

Ios 为什么可以';当我将UIView子类化时,我是否在图像上绘制?,ios,swift,uiview,uiimageview,uipangesturerecognizer,Ios,Swift,Uiview,Uiimageview,Uipangesturerecognizer,我正在尝试使用来自的代码从摄影机卷上绘制图像。从照相机滚轮中选择照片后,imageView被设置为照片。当用户按下绘图按钮时,会在照片上方添加tempImageView,以便用户可以在照片上绘图。然而,当我试图在图像上画画时,什么也没有发生。为什么? 代码: 确保tempmageview.userIteractionEnabled=YES。默认情况下,UIImageView的此属性为否。 将断点放入GestureRecognitor方法后,查看是否正在调用该方法。不必亲自尝试:至少在draw()

我正在尝试使用来自的代码从摄影机卷上绘制图像。从照相机滚轮中选择照片后,
imageView
被设置为照片。当用户按下绘图按钮时,会在照片上方添加
tempImageView
,以便用户可以在照片上绘图。然而,当我试图在图像上画画时,什么也没有发生。为什么?

代码:


确保tempmageview.userIteractionEnabled=YES。默认情况下,UIImageView的此属性为否。
将断点放入GestureRecognitor方法后,查看是否正在调用该方法。

不必亲自尝试:至少在draw()中将tempImageView的帧原点设置为(0,0)(也就是说,不要使用未更改的父边界),并在drawRect()中绘制路径之前设置线宽
class EditViewController: UIViewController{
    var tempImageView: DrawableView!
    var imageView: UIImageView = UIImageView(image: UIImage(named: "ClearImage"))

    func draw(sender: UIButton!) {
        tempImageView = DrawableView(frame: imageView.bounds)
        tempImageView.backgroundColor = UIColor.clearColor()
        self.view.addSubview(tempImageView)
    }

}

class DrawableView: UIView {

let path=UIBezierPath()
var previousPoint:CGPoint
var lineWidth:CGFloat=10.0

// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override init(frame: CGRect) {
    previousPoint=CGPoint.zero
    super.init(frame: frame)
}

required init?(coder aDecoder: NSCoder) {
    previousPoint=CGPoint.zero
    super.init(coder: aDecoder)
    let panGestureRecognizer=UIPanGestureRecognizer(target: self, action: "pan:")
    panGestureRecognizer.maximumNumberOfTouches=1
    self.addGestureRecognizer(panGestureRecognizer)
}

override func drawRect(rect: CGRect) {
    // Drawing code
    UIColor.greenColor().setStroke()
    path.stroke()
    path.lineWidth=lineWidth
}

func pan(panGestureRecognizer:UIPanGestureRecognizer)->Void
{
    let currentPoint=panGestureRecognizer.locationInView(self)
    let midPoint=self.midPoint(previousPoint, p1: currentPoint)

    if panGestureRecognizer.state == .Began
    {
        path.moveToPoint(currentPoint)
    }
    else if panGestureRecognizer.state == .Changed
    {
        path.addQuadCurveToPoint(midPoint,controlPoint: previousPoint)
    }

    previousPoint=currentPoint
    self.setNeedsDisplay()
}

func midPoint(p0:CGPoint,p1:CGPoint)->CGPoint
{
    let x=(p0.x+p1.x)/2
    let y=(p0.y+p1.y)/2
    return CGPoint(x: x, y: y)
}

}