UIContainerView Ändern eines View-Controller angezeigt werden:UIContainerView stoppt Berührung Empfang nach dem Rahmen
Jetzt bin ich binden mit diesem Code es Vollbild, wenn der Benutzer tippen Vollbild-Schaltfläche zu machen:
@IBAction func fullscreen(_ sender: Any) {
view.goFullscreen()
}
extension CGAffineTransform {
static let ninetyDegreeRotation = CGAffineTransform(rotationAngle: CGFloat(Double.pi/2))
}
extension UIView {
var fullScreenAnimationDuration: TimeInterval {
return 0.15
}
func minimizeToFrame(_ frame: CGRect) {
UIView.animate(withDuration: fullScreenAnimationDuration) {
self.layer.setAffineTransform(.identity)
self.frame = frame
}
}
func goFullscreen() {
UIView.animate(withDuration: fullScreenAnimationDuration) {
self.layer.setAffineTransform(.ninetyDegreeRotation)
self.frame = UIScreen.main.bounds
}
}
}
Die Ansicht im Vollbildmodus funktioniert gut, aber wenn der Viewcontroller im Vollbildmodus angezeigt wird, hört die Ansicht auf zu reagieren. Dies passiert, wenn ich dem View-Controller Einschränkungen hinzufüge, aber wenn ich es entferne, funktioniert es gut. Warum passiert das und wie kann ich sowohl Constraint setzen als auch Touch bekommen?
Leider Geste Erkenner ignorieren Ihre verwandeln. Daher müssen Sie die Transformation manuell auf die Berührungspunkte anwenden. Sie können dies auf verschiedene Arten tun, z. B. indem Sie den Erkenner auf die Superansicht anwenden, die inverse Transformation auf den Punkt anwenden und dann prüfen, ob er innerhalb der Grenzen der Zielansicht liegt. –
@JoshHomann danke! Kannst du mir Code zeigen? –
Ich bin in einem Zug. Ich werde Code hinzufügen, wenn ich nach Hause komme. Grundsätzlich ist das Problem, dass Ihre Transformation nur Ihre scheinbare Position auf dem Bildschirm beeinflusst, nicht Ihre tatsächlichen Grenzen. Deshalb sollten Sie die Transformation für vorübergehende Dinge wie Animationen verwenden und Einschränkungen verwenden, um dauerhafte Größen-/Positionswechsel vorzunehmen. In diesem Fall würde ich erwägen, die Änderung der Bedingungen hier mit dem Layout zu ändern, anstatt die Transformation zu verwenden. –