Saya telah menggaruk-garuk kepala karena masalah ini. Tampaknya terkait dengan bagaimana tabBar diinisialisasi dan ditambahkan ke hierarki tampilan. Saya juga mencoba solusi di atas seperti memanggil invalidateIntrinsicContentSize
, mengatur frame, dan juga bottomInsets
di dalam subclass UITabBar. Mereka tampaknya bekerja namun untuk sementara dan mereka melanggar beberapa skenario lain atau kemunduran bilah tab dengan menyebabkan beberapa masalah tata letak yang ambigu. Ketika saya men-debug masalah, saya mencoba menetapkan batasan ketinggian ke UITabBar dan centerYAnchor, namun tidak ada yang memperbaiki masalah. Saya menyadari dalam tampilan debugger bahwa tinggi tabBar benar sebelum dan setelah masalah direproduksi, yang membuat saya berpikir bahwa masalahnya ada di subview. Saya menggunakan kode di bawah ini untuk berhasil memperbaiki masalah ini tanpa mundur dari skenario lain.
- (void) viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
if (DEVICE_IS_IPHONEX())
{
[coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> _Nonnull context) {
for (UIView *view in self.tabBar.subviews)
{
if ([NSStringFromClass(view.class) containsString:@"UITabBarButton"])
{
if (@available (iOS 11, *))
{
[view.bottomAnchor constraintEqualToAnchor:view.superview.safeAreaLayoutGuide.bottomAnchor].active = YES;
}
}
}
} completion:^(id<UIViewControllerTransitionCoordinatorContext> _Nonnull context) {
[self.tabBar layoutSubviews];
}];
}
}
Asumsi: Saya melakukan ini hanya untuk iPhone X, karena tampaknya tidak mereproduksi di perangkat lain saat ini. Didasarkan pada asumsi bahwa Apple tidak mengubah nama kelas UITabBarButton di rilis iOS mendatang. Kami melakukan ini di UITabBarButton hanya jika berarti jika apple menambahkan lebih banyak subview internal ke UITabBar, kami mungkin perlu memodifikasi kode untuk menyesuaikannya.
Tolong beri tahu saya jika ini berhasil, akan terbuka untuk saran dan peningkatan!
Seharusnya sederhana untuk membuat padanan cepat untuk ini.