iPhone X Topbar问题

iPhone X Topbar问题

问题描述:

我正试图将我的应用程序转换为兼容iPhone X的应用程序。我的视图控制器中有一个顶部布局为20像素的桌子。现在下面是两个设备iPhone X Topbar问题

iPhone截图8 iPhone 8

iPhone X iPhone-X

现在我正在用iPhone X的彩色背景中的白顶吧。

如果我将表顶部布局设置为0,那么单元格会与我不需要的顶栏重叠。

任何人都可以提出什么问题?任何建议都会很棒。

主视图控制器的视图的背景更改为您想要的颜色:

enter image description here enter image description here

您不应该遵循顶层布局,而应该遵循新的安全区域。那么一切都应该没问题。

+0

请问你能解释一点点吗? –

+0

您可以在这里阅读:“所有的应用程序都应该遵循由UIKit定义的安全区域和布局边距,以确保根据设备和上下文进行适当的插入。” https://developer.apple.com/ios/human-interface-guidelines/overview/iphone-x/ – Alper

添加在Appdelegate.m

if ([UIScreen mainScreen].bounds.size.height >= 812) 
    { 
     [application setStatusBarStyle:UIStatusBarStyleLightContent]; 
     self.window.clipsToBounds =YES; 
     self.window.frame = CGRectMake(0,40,self.window.frame.size.width,self.window.frame.size.height-20); 
    } 

可以为顶栏的背景颜色(状态栏)在应用程序启动期间或视图控制器的viewDidLoad期间..

extension UIApplication { 

    var statusBarView: UIView? { 
     return value(forKey: "statusBar") as? UIView 
    } 

} 

// Set upon application launch 
class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
     UIApplication.shared.statusBarView?.backgroundColor = UIColor.green 
     return true 
    } 
} 


or 
// Set it from your view controller 
class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     UIApplication.shared.statusBarView?.backgroundColor = UIColor.green 
    } 

} 



下面是结果:

enter image description here

,你可以看到这个空白基本上是头,我不知道为什么它在iPhone X. 发生只是试图重写方法

- (CGFloat的)的tableView:(UITableView的*)的tableView heightForHeaderInSection:(NSInteger的)部分

然后返回0.01F;

尝试和完美工作