it-swarm.com.de

Autoresizing-Problem in Xcode 8

=== EDIT ========

Dieses Problem wurde in Xcode 8.1 behoben. Ich habe kontrolliert.

==================

Ich kenne das automatische Layout nicht richtig. Daher verwende ich die Autoresizing-Option in allen Apps, und das ist gut für mich. Ich kann meine Anforderungen damit problemlos erfüllen.

Jetzt habe ich in Xcode 8 mein altes Swift-Projekt auf Swift 3 migriert. Nun tritt ein Problem auf. 

 Storyboard SS

Im Bild ist zu sehen, ich habe Autoresizing eingestellt, und es funktioniert einwandfrei ohne Probleme in allen Geräten. Dieses Projekt ist live im AppStore, sodass ich weder die Benutzeroberfläche noch das Storyboard anzeigen kann. 

Jetzt muss ich ein Update im Projekt durchführen. Also arbeite ich jetzt in Xcode 8. Meine Autoresizing-Funktion funktioniert jedoch nicht ordnungsgemäß, da alle Steuerelemente in der Mitte angezeigt werden und die Benutzeroberfläche durcheinander gerät.

 Output image

Und das Problem bleibt auch im Gerät bestehen. Ich habe auch Simulator und Gerät eingecheckt. Problem ist aber auch da. Jeder Vorschlag und Hilfe wird geschätzt. Danke im Voraus.

EDIT: 

Gestern gibt es nur in der Laufzeit Probleme, aber das Storyboard von Today hat auch Ansichten wie dieses Bild geändert

 Storyboard image

Was bedeutet, dass das gesamte Design der Benutzeroberfläche durcheinander ist. Das ist komisch.

32
Max

Vor dem gleichen Problem. Meines Erachtens tritt dieses Problem auf, wenn wir Autoresizing verwenden und nur innere AutoresizingMask auf einen beliebigen View-Controller setzen. Mögen,

 enter image description here

Wenn wir zu diesem Zeitpunkt auch die Rand-AutoresizingMask verwenden, steht dieses Problem nicht vor. Mögen,

 enter image description here

Ich weiß nicht, dass dies ein Fehler von xcode 8 ist, oder entferne diese Funktion in xcode 8.

Mein letzter Vorschlag ist also, dass wir in xcode 8 das automatische Layout verwenden müssen. 

7
Keyur Hirani

Bitte deaktivieren Sie die automatische Größenänderung von Xib oder Storyboard. Und inviewDidLoad set [_scrollView setAutoresizesSubviews:YES];

Versuchen Sie es, wenn dies Ihr Problem löst

Bearbeiten: Deaktivieren Sie bei Storyboard die Option Resize view from NIB.

7
Hassy

Ich bin mir nicht sicher, was Storyboards angeht, aber ich habe eine temporäre Lösung für Xib-Dateien gefunden. Wählen Sie im Bedienfeld Dienste (rechtes Bedienfeld) die Registerkarte Dateiinspektor. Wählen Sie im Abschnitt Interface Builder-Dokument die zu öffnende Datei in "XCode 7.x" aus. Sie werden aufgefordert, zu bestätigen, dass Sie die XCode 8-Funktionen nicht verwenden möchten, die Datei speichern und schließen.

 enter image description here

3
Srdr

Xcode 8 Beta 2 hat dieses Problem gelöst !! Ich habe es jetzt schon geprüft!

2
Genevios

ich habe auch das gleiche Problem für ScrollView in Xcode8

ich habe eine einzige Lösung, um mit ScrollView zu arbeiten

nehmen Sie zunächst eine einfache UIView und fügen Sie alle Komponenten hinzu, die Sie in scrollView hinzufügen möchten, und geben Sie diese Komponente an autoSizing

nehmen Sie außerdem ein scrollView und programmgesteuert einen Ansichtsrahmen und auch scrollView contentSize und fügen Sie Ihre Ansicht in scrollView hinzu

in meinem Fall füge ich diesen Code in viewDidLoad für das Swift-Projekt hinzu

// add view to scrollview

self.scrollObjForNextAppointment.contentSize = CGSize(width:self.scrollObjForNextAppointment.frame.size.width,height:410)

self.viewForScrollContent.frame = CGRect(x:0,y:0,width:self.scrollObjForNextAppointment.frame.size.width,height:410)

self.scrollObjForNextAppointment.addSubview(self.viewForScrollContent)

es ist Arbeit für mich, danke!

2
Sapana Ranipa

Gelöst durch Deaktivieren der Option "AutoViews ändern" in ScrollView

 enter image description here

1
Thippi

Update Das Problem scheint in Xcode 8.1 behoben worden zu sein


Mit dem gleichen Problem und ich habe festgestellt, dass der Täter hier das Element UIScrollView ist. Bewegen Sie einfach alles außerhalb Ihres Scrollers und Sie werden sehen, dass alles wie zuvor funktioniert.

Eine mögliche Problemumgehung wäre, Ihren scrollbaren Inhalt in einer normalen UIView zu platzieren und ihn dann zur Laufzeit programmgesteuert durch UIScrollView zu ersetzen.

1
mojuba

Ein Moderator hat meine Antwort hier als Duplikat gelöscht, siehe meine Antwort unter:

Autoresizing unter iOS 10 funktioniert nicht

Als Antwort auf max, ja, kann die Größenänderung einer Reihe von Unteransichten sehr schmerzhaft sein. Deshalb habe ich vorgeschlagen, eine einzelne "Inhaltsansicht" zur Bildlaufansicht hinzuzufügen und alle vorhandenen Unteransichten innerhalb dieser Ansicht zu verschieben. Die Größe der Unteransichten innerhalb der Inhaltsansicht wird wie bei der Bildlaufansicht automatisch geändert, und die Inhaltsansicht wird automatisch an die Bildlaufansicht angepasst.

Es ist diese Inhaltsansicht, deren Größe Sie dann in viewDidLayoutSubviews ändern.

Und wieder ist die "Inhaltsansicht" innerhalb des Scrollview-Konstrukts so ziemlich die Standardmethode, um automatische Bildlaufansichten mit Autolayout zu erstellen, daher sollte dies als bewährte Methode betrachtet werden.

Diese Methode wird hier beschrieben ...

https://spin.atomicobject.com/2014/03/05/uiscrollview-autolayout-ios/

Meine Methode scheint etwas kompliziert zu sein, aber ich konnte ein Storyboard mit etwa einem Dutzend Szenen und VCs in etwa 15 Minuten aufrüsten. Es hätte viel, viel, viel länger gedauert, alles mithilfe des automatischen Layouts neu zu erstellen.

0
Michael Long

Apple hat gerade XCode 8.2 herausgebracht, der dieses Problem für mich behebt. Ich habe XCode 7.3.1 für mein Schnittstellendesign parallel zu 8.1 verwendet, aber ich kann jetzt 8.2 ohne Probleme verwenden. 

Das Storyboard wird jedoch mit der Breite und Höhe der Frames aktualisiert, um die neue Funktion "Anzeigen als:" aufzunehmen. Es scheint jedoch keinen Einfluss auf die Ausführung auf dem Gerät/Simulator zu haben. 

Merkwürdigerweise wird der Bugfix in den Versionshinweisen XCode 8.2 nicht erwähnt. 

Originalantwort hier

0
Thermometer