2017-03-26 4 views
1

So erkennen Sie die Berührung auf der Kante oder am Rand der Ansicht in iOS Swift. Ich möchte UIView Breite und Höhe erhöhen, wenn der Benutzer den Rahmen der UIView zieht.Touch an der Kante des UIVIEW erkennen

+0

Sie können einen Blick auf die folgenden SO Thread nehmen möchten - http://stackoverflow.com/questions/8460119/how-to- resize-uiview-by-drawing-from-its-edges Es lohnt sich, etwas zu suchen, bevor Sie eine Frage stellen :) – Fahim

+0

Mögliches Duplikat von [Wie verkleinere ich UIView durch Ziehen von seinen Kanten?] (http://stackoverflow.com/questions/8460119/how-to-resize-uiview-by-Ziehen-von-its-Kanten) – Fahim

+0

@ Fahim, ich vermute es ist eigentlich kein Duplikat, weil das OP fragt, wie man die Berührung erkennt * die Kante * einer UIView, und diese Frage adressiert eine UIView mit "Handles". Das heißt, ich würde dem OP raten, sowohl (1) diese Frage zu betrachten als auch (2) zu überlegen, wie praktisch jede andere CocoaTouch-Anwendung es tut - mit der Pinch-Geste. Das Erkennen einer Berührung ist nicht sehr benutzerfreundlich ... Apple schlägt vor, Ihre Tasten in der Größe minimal 40x40 zu machen. Können Sie wirklich die gleiche Genauigkeit erwarten wie ein Mauszeiger? Sie sollten entweder Griffe oder die Pinch-Geste verwenden. – dfd

Antwort

0

haben die Lösung How to resize UIView by dragging from its edges? Lösung gelöst.

Swift Version und Code Kanten zu erkennen sowie Ecken

class OverlayView: UIView { 

    /* 
    // Only override draw() if you perform custom drawing. 
    // An empty implementation adversely affects performance during animation. 
    override func draw(_ rect: CGRect) { 
     // Drawing code 
    } 
    */ 


    static var kResizeThumbSize:CGFloat = 44.0 
    private typealias `Self` = OverlayView 

    var imageView = UIImageView() 

    var isResizingLeftEdge:Bool = false 
    var isResizingRightEdge:Bool = false 
    var isResizingTopEdge:Bool = false 
    var isResizingBottomEdge:Bool = false 

    var isResizingBottomRightCorner:Bool = false 
    var isResizingLeftCorner:Bool = false 
    var isResizingRightCorner:Bool = false 
    var isResizingBottomLeftCorner:Bool = false 


     //Define your initialisers here 

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
     if let touch = touches.first { 
      let currentPoint = touch.location(in: self) 

      isResizingBottomRightCorner = (self.bounds.size.width - currentPoint.x < Self.kResizeThumbSize && self.bounds.size.height - currentPoint.y < Self.kResizeThumbSize); 
      isResizingLeftCorner = (currentPoint.x < Self.kResizeThumbSize && currentPoint.y < Self.kResizeThumbSize); 
      isResizingRightCorner = (self.bounds.size.width-currentPoint.x < Self.kResizeThumbSize && currentPoint.y < Self.kResizeThumbSize); 
      isResizingBottomLeftCorner = (currentPoint.x < Self.kResizeThumbSize && self.bounds.size.height - currentPoint.y < Self.kResizeThumbSize); 

      isResizingLeftEdge = (currentPoint.x < Self.kResizeThumbSize) 
      isResizingTopEdge = (currentPoint.y < Self.kResizeThumbSize) 
      isResizingRightEdge = (self.bounds.size.width - currentPoint.x < Self.kResizeThumbSize) 

      isResizingBottomEdge = (self.bounds.size.height - currentPoint.y < Self.kResizeThumbSize) 

      // do something with your currentPoint 

     } 
    } 

    override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) { 
     if let touch = touches.first { 
      let currentPoint = touch.location(in: self) 
      // do something with your currentPoint 
     } 
    } 

    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { 
     if let touch = touches.first { 
      let currentPoint = touch.location(in: self) 
      // do something with your currentPoint 


      isResizingLeftEdge = false 
      isResizingRightEdge = false 
      isResizingTopEdge = false 
      isResizingBottomEdge = false 

      isResizingBottomRightCorner = false 
      isResizingLeftCorner = false 
      isResizingRightCorner = false 
      isResizingBottomLeftCorner = false 

     } 
    } 
Verwandte Themen