2013-05-13 8 views
10

Haben Sie eine benutzerdefinierte Tabellenzelle mit ihrer eigenen .XIB und .h und .m. Nichts zu ausgefallen. Wenn sich das Gerät dreht, ändert sich die Zellenbreite nicht. Die Tabellenzelle für den Indexpfad wird aufgerufen, aber die Breite ändert sich nicht (z. B. von Hochformat zu Querformat). Was würde das verhindern?IOS-benutzerdefinierte Tabellenzelle passt die Breite für die Orientierungsänderung nicht automatisch an

Ich möchte die Bildgröße nicht manuell einstellen.

Wird Postleitzahl wenn nötig, aber vielleicht können wir mit out-Code auf diesem einen beantworten.

Auch wenn die App im Querformat gestartet wird, wird auch keine größere Breite für die Zelle festgelegt.

[Zusatz]

auch nicht mit nicht angepassten Zellen funktioniert.

XIB für die Tabelle hat die Größenanpassung scheint korrekt eingerichtet zu sein (Nicht-IOS6-Unterstützung).

+0

Einige Screenshots wären hilfreich. Es ist schwer zu sagen, was wirklich nicht in der Größe geändert wird. – matt

+0

Ich stimme zu, aber diese Frage interessiert mich jetzt nicht mehr. Wir können es entfernen, wenn der Moderator es möchte. – ort11

Antwort

1

Die Zelle hat automatisch dieselbe Breite wie die Tabellenansicht. Was also nicht die Größe ändert, könnte die Tabellenansicht sein. Sie müssen entsprechende Einschränkungen (bei Verwendung von Autolayout, die Standardeinstellung in iOS 6) oder Autoresizing-Maske (andernfalls) angeben, damit die Größe der Größe geändert wird, um die Größenänderung der Top-Level-Ansicht zu kompensieren.

+0

Ja, das war es soll passieren. Aus irgendeinem Grund in diesem Projekt ist es nicht und versuchen, es herauszufinden. Versucht oben harten Code ohne Glück. Ich nehme an, dass die korrekte Größe der Zelle von der Tabellenansicht nach (Zelle für Index) und davor (Zelle wird angezeigt) festgelegt wird. – ort11

+0

Refactored ein bisschen und funktioniert jetzt gut. Nicht sicher was es war. – ort11

1

Ich sah auch das gleiche Problem beim Autorisieren benutzerdefinierte Zellen beim Drehen. Nach dem Kampf habe ich die Lösung als authorize cell.contentView bekommen, weil ich meine Ansichten als Unteransicht in cell.contentview hinzufüge.

habe ich folgenden Code und mein Code funktioniert gut :)

cell.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin; 
+0

Was Sie erwähnt haben, ist richtig, aber Autoresizing-Masken sollten wie folgt eingestellt werden: (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight). Ich hatte auch die gleichen Zweifel, wie Sie in Ihrem Code erwähnt, also habe ich eine Frage in SO geschrieben und Sie können es für Ihre Referenz anzeigen: http://stackoverflow.com/questions/7754851/autoresizing-masks-programmatically-vs-interfact -builder-xib-nib –

+0

Dieser Code funktioniert nicht mehr wie von Swift2. Alle diese Konstanten enden mit nicht aufgelösten Identifikatoren. – zeeple

7

Wenn Sie die layoutSubviews oder eine andere Methode überschreiben, rufen Sie nicht vergessen, es ist super:

override func layoutSubviews() { 
    //... 

    super.layoutSubviews() 
} 

nicht tun Dies führt zu dem Problem, dem Sie gegenüberstehen.

1

Für das schnelle 2 wird es sein:

cell.contentView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] 
0

In Swift 4, die unten funktioniert.

cell.cellUIView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 

Hinweis:cellUIView ist ein UIView ich zum contentView der Prototyp Zellen gegeben.

Verwandte Themen