iPhone X Topbar问题

时间:2017-09-18 11:10:15

标签: ios iphone-x

我正在尝试将我的应用与iPhone X兼容。我的viewcontroller中有一个表格,顶部布局为20像素。现在,下面是两个设备的屏幕截图

iPhone 8 iPhone 8

iPhone X. iPhone-X

现在我在iPhone x中获得了带有彩色背景的白色顶部栏。

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

有谁能说明问题是什么?任何建议都会很棒。

6 个答案:

答案 0 :(得分:2)

您不应该符合顶部布局,而应符合新的安全区域。那一切都应该没问题。

答案 1 :(得分:2)

将主视图控制器视图的背景更改为所需的颜色:

enter image description here enter image description here

答案 2 :(得分:2)

您可以在应用程序启动期间或视图控制器的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

答案 3 :(得分:1)

在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);
     }

答案 4 :(得分:1)

你可以看到这个空白区域基本上是标题,我不知道为什么它会在iPhone X中出现。 只是尝试覆盖方法

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

然后返回0.01f;

尝试并且工作得很好

答案 5 :(得分:0)

此处提供的所有答案都是很好的解决方案,但是,您也可以通过自动布局来实现此目的,方法是将Tableview的顶部约束设置为安全区域。这是屏幕截图。

这同样适用于底部约束。

您还可以参考this iPhoneX自动布局指南。

Select the top constraint of Tableview and change it to SafeArea.Top