Ich entwickle eine App, um einen Binärbaum anzuzeigen.UIView Orientierungsänderung in Swift
Jeder Knoten wird als eine Unteransicht angezeigt, die programmatisch vom ViewController generiert wird - ich führe Folgendes aus viewDidLayoutSubviews() aus.
let theView = BinaryTreeView(frame: CGRect(x: 0, y: 50, width: width, height: 100))
// let theView = BinaryTreeView(s: "I'm testing")
theView.backgroundColor = .white
theView.addGestureRecognizer(UIPinchGestureRecognizer(target:theView, action:#selector(BinaryTreeView.changeScale(recognizer:))))
self.view.addSubview(theView)
theView.eyesOpen = false
let secondView = BinaryTreeView(frame: CGRect(x: width/2, y: 150, width: width/2, height: 100))
// let theView = BinaryTreeView(s: "I'm testing")
secondView.backgroundColor = .white
secondView.addGestureRecognizer(UIPinchGestureRecognizer(target:secondView, action:#selector(BinaryTreeView.changeScale(recognizer:))))
self.view.addSubview(secondView)
let thirdView = BinaryTreeView(frame: CGRect(x: (width/2)+width/4, y: 250, width: width/4, height: 100))
// let theView = BinaryTreeView(s: "I'm testing")
thirdView.backgroundColor = .white
thirdView.addGestureRecognizer(UIPinchGestureRecognizer(target:thirdView, action:#selector(BinaryTreeView.changeScale(recognizer:))))
self.view.addSubview(thirdView)
Das Problem ist, dass die Ansichten über Orientierungsänderung sich wiederholen (über drei Knoten sind, auf Orientierungsänderung 4 könnte angezeigt werden
ich durch Stapel sah und in meiner Unterklasse UIView ich hinzugefügt:.
.self.contentMode = UIViewContentMode.redraw
im programatic Subview aber das gleiche passiert
keine Sorge - ich werde meinen Knoten in einer Schleife später erzeugen (ich bin versuchen zu verstehen, wie Layout funktioniert). Übrigens habe ich festgestellt, dass das Gleiche passiert ist, indem ich eine UICollectionView verwendet habe, also schein ich etwas fundamental falsch zu machen.
Danke - aber die Gesten arbeiten gut. Die Frage betrifft Orientierungsänderungen und Objekte, die nicht ordnungsgemäß regeneriert werden. – stevenpcurtis
Sie haben gesagt, dass Sie bei der Orientierungsänderung zusätzliche Objekte erhalten. Das liegt daran, dass Sie Ihre Erkenner gekettet haben, indem Sie Ihre Ziele verkettet haben. Hast du versucht, das Ziel für alle 3 selbst zu ersetzen? Hat sich das Verhalten geändert? – Mozahler
Wenn ich die Änderung an sich selbst mache und dann auf ein Objekt klicke, bekomme ich einen Absturz. Unbekannter Selektor an Instanz gesendet. – stevenpcurtis