Ich habe diesen Code, der die Pinch-Geste behandelt und den Skalierungswert erhält und an die updateViewBounds
-Funktion übergibt.Ändern der Größe von UIView mit UIPinchGestureRecognizer
func pinchedOnView(gesture : UIPinchGestureRecognizer) {
switch gesture.state
{
case UIGestureRecognizerState.began:
self.resizableView.updateViewBounds(scale: gesture.scale , initialBounds: self.resizableView.bounds)
case UIGestureRecognizerState.changed :
self.resizableView.updateViewBounds(scale: gesture.scale, initialBounds: self.resizableView.bounds)
default :()
}
}
Also diese Funktion nimmt die Eingabe-Skala findet den entsprechenden Rahmen und aktualisiert den Ansichtsrahmen.
public func updateViewBounds(scale : CGFloat,initialBounds : CGRect) {
let zt = CGAffineTransform(scaleX: scale, y: scale)
let tempBounds = initialBounds.applying(zt)
if tempBounds.width < UIScreen.main.bounds.width - 20 && tempBounds.height < UIScreen.main.bounds.height - 20 {
if tempBounds.height > 300 || tempBounds.width > 300 {
self.bounds = tempBounds
}
else {
}
}
}
Ja, diese Funktion funktioniert einwandfrei, aber es ist sehr schnell. Ja, wir wissen, dass UIPinchGestureRecognizer
jeden Bruchteil der Werte zurückgibt.
Ich möchte der Benutzer eine sehr ordnungsgemäße Ansicht Größe ändern sehen, ich möchte nicht die Ansicht für jeden Bruchteil Wert zu aktualisieren. Irgendwelche Gedanken?
Haben Sie den Fall '.ended' mit' Gesten.State' versucht –