2017-09-21 2 views
2

Ich habe UITabBar hinzugefügt, ohne AutoLayout zu verwenden und es funktionierte gut bis iOS 10.3.1. Es scheint eine neue Funktion in iOS 11 zu geben, die besagt, dass die Höhe von UITabBar 49 im Hochformat und 32 im Querformat ist (Photo App ist ein gutes Beispiel). Wenn ich nun meine App in iOS11 starte, startet meine App im Querformat, die Höhe von UITabBar beginnt mit der Höhe von 32, aber wenn sie in den Hochformatmodus gedreht wird, bleibt sie in 32 und die Symbole werden größer TabBar-Rahmen. Wenn ich meine App im Hochformat starte, beginnt die Höhe der TabBar mit der Höhe 49 und bleibt gleich, wenn sie in den Hochformatmodus gedreht wird (was akzeptabel ist).UITabbar Höhe in iPhone nicht dynamisch ändern beim Drehen von Querformat zu Hochformat und umgekehrt iOS11

Ich habe versucht, das Problem mit AutoLayout und Einschränkungen zu beheben, aber ich kann es nicht lösen. Wenn jemand dieses Problem hat, wäre es eine große Hilfe.

Update: Dieses Problem scheint nur in iPhone Non-Plus-Geräten auftreten.

Antwort

1

Ich hatte dieses Problem und löste es durch Aufruf invalidateIntrinsicContentSize() auf der Tab-Leiste, dann updateConstraintsIfNeeded() auf eine Superview davon. In meinem Fall habe ich beide innerhalb eines Animationsblocks aufgerufen, aber es ist möglicherweise möglich, einen oder beide davon zu entfernen.

+0

Das hat mich ein paar Stunden gerettet, danke! Ich habe versucht, dies außerhalb eines Animationsblocks zu tun, in "traitCollectionDidChange", aber das Problem würde immer noch von Landschaft zu Porträt auftreten. Letztendlich habe ich das in einen Animationsblock in 'viewWillTransitionToSize: withTransitionCoordinator:' eingefügt, mit 'animateAlonsideTransition: completion:'. –

Verwandte Themen