Ich versuche, einen Kreis zu meiner benutzerdefinierten Kameraansicht hinzuzufügen. Ich habe ein Problem, es zu meinem "Berührungspunkt" zu zentrieren, weil es meinen Kreis an der oberen linken Ecke hinzufügt, wenn ich die Berührung Bildschirm, aber wenn ich "CenterPoint" neben ArcCenter mit einigen CGPoint (// Einige Einschränkungen) in der zweiten Zeile des Codes ersetzen, fügt es meinen Punkt rechts CGPoint.Benutzerdefinierte schnelle Kamera Kreis Touch Antwort
Dies ist mein Code so weit:
func pointInCamera(centerPoint:CGPoint){
let circlePath = UIBezierPath(arcCenter: centerPoint, radius: CGFloat(30), startAngle: CGFloat(0), endAngle:CGFloat(M_PI * 2), clockwise: true)//This "centerPoint" is the problem I guess
let shapeLayer = CAShapeLayer()
shapeLayer.path = circlePath.CGPath
shapeLayer.fillColor = UIColor(red: 240/255, green: 240/255, blue: 240/255, alpha: 0.3).CGColor
shapeLayer.strokeColor = UIColor(red: 0, green: 191/255, blue: 1, alpha: 0.9).CGColor
shapeLayer.lineWidth = 2.0
view.layer.addSublayer(shapeLayer)
}
//Focus camera
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
let screenSize = cameraView.bounds.size
if let touchPoint = touches.first {
let x = touchPoint.locationInView(cameraView).y/screenSize.height
let y = 1.0 - touchPoint.locationInView(cameraView).x/screenSize.width
let focusPoint = CGPoint(x: x, y: y)
let backCamera = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
if let device = backCamera {
do {
try device.lockForConfiguration()
device.focusPointOfInterest = focusPoint
pointInCamera(focusPoint)
device.focusMode = .AutoFocus
device.exposurePointOfInterest = focusPoint
device.exposureMode = AVCaptureExposureMode.ContinuousAutoExposure
device.unlockForConfiguration()
}
catch {
// just ignore
}
}
}
}
Vielleicht ist das Problem, dass berührt die siri Fern bezüglich statt absolute Berührungen auf einem iOS-Gerät. Also ich denke, der Touch-Standort (0/0) ist auf der aktuell fokussierten Ansicht. – matthiaswitt
Ja, es ist wahr, dass es druckt, dass mein Touch-Standort 0/0 ist, aber wie kann ich es richtig machen? –
Ich verstehe nicht, was Sie tun möchten. Ein Screenshot wäre hilfreich. Ich denke, das Problem liegt in der Zeile, in der du X und Y errechnest: Warum teilst du die Bildschirmgröße? locationInView() sollte den richtigen CGPoint zurückgeben, wo die Berührung passiert ist – matthiaswitt