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
}
}
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
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
@ 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