【发布时间】:2019-08-22 11:02:41
【问题描述】:
我已关注this answer 将我的标签栏重新定位到页面顶部。在 iOS 13 发布之前,它一直运行良好。在 iOS 13 中,标签栏在屏幕底部可见。我应该使用任何其他解决方法吗?
有人遇到同样的问题吗?
更新:
以下是我在应用中使用的代码:
- (void) viewWillLayoutSubviews {
[super viewWillLayoutSubviews];
[self.tabBar invalidateIntrinsicContentSize];
// Just a quick fix for making this to happen for iOS versions between 11.0 to 11.1
// Updating the frame in Main queue.
dispatch_async(dispatch_get_main_queue(), ^{
[self changeTabBarPosition];
});
// Set the translucent property to NO then back to YES to
// force the UITabBar to reblur, otherwise part of the
// new frame will be completely transparent if we rotate
// from a landscape orientation to a portrait orientation.
self.tabBar.translucent = NO;
self.tabBar.translucent = YES;
}
- (void)changeTabBarPosition {
CGFloat tabSize = 44.0;
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if (UIInterfaceOrientationIsLandscape(orientation)) {
tabSize = 32.0;
}
CGRect tabFrame = self.tabBar.frame;
tabFrame.size.height = tabSize;
tabFrame.origin.y = [UIApplication sharedApplication].statusBarFrame.size.height;
self.tabBar.frame = tabFrame;
}
【问题讨论】:
-
实际上
statusBarOrientation在 iOS 13 中已被弃用。因此请检查并更新您的代码。显示您尝试过的代码 -
我们怎么知道你尝试了哪一个
标签: ios objective-c ios13 xcode11