Wenn Sie eine UIKit
Komponente in ihre Teile zerlegen, wie UITabBar
, werden Sie nur die gleichen UIKit
Komponenten finden, die wir alle verwenden dürfen. Manchmal ist es schön, Apples Sachen zu benutzen, weil wir wissen, dass es jedes Mal funktioniert. Aber manchmal ist es nicht so schön, Apples Sachen zu benutzen, weil sie nicht immer mögen, dass sie sich in ihre vorgefertigten Komponenten einmischen, und sie verbergen oft genau die Verhaltensweisen, die Sie vielleicht ändern wollen.
Also, wenn Sie wissen, was Sie tun, oder sehr bereit sind zu lernen, würde ich dringend vorschlagen, keine Angst vor der Erstellung Ihrer eigenen Sachen, wie eine benutzerdefinierte Tab-Leiste, die für Ihre Zwecke wahrscheinlich nicht mehr als eine UIView
mit entweder UIButton
Unteransichten oder andere UIView
Unteransichten mit TAP-Gestenerkennung an ihnen. Wenn Sie einen Masterview-Controller haben, der Ihr Containeransicht-Controller ist, in dem sich die Kindansichtscontroller befinden, platzieren Sie die Tableiste im Master und Sie haben eine legitime Tableiste, die immer über alles auf dem Bildschirm eingeblendet wird. Das ist genau das Verhalten, das wir wollen).
Und so weit wie iPhone X betroffen ist und sichere Bereiche, so dass sie nur anwenden, wie Sie es normalerweise jede Ansicht weil das alle Ihre benutzerdefinierten Tab-Leiste ist:
if #available(iOS 11.0, *) {
tabBar.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
tabBar.widthAnchor.constraint(equalTo: view.safeAreaLayoutGuide.widthAnchor).isActive = true
tabBar.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true
} else {
tabBar.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
tabBar.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
tabBar.bottomAnchor.constraint(equalTo: bottomLayoutGuide.topAnchor).isActive = true
}
tabBar.heightAnchor.constraint(equalToConstant: 44).isActive = true
Und Ihre Sorge um die Größenänderung, wenn Sie Geben Sie Ihre Tab-Bar-Einschränkungen (wie Sie es ohnehin tun sollten) in der Master-Ansicht-Controller, wird es strecken und rotieren in jeder möglichen Weise ohne Fehler.