iPhone X 顶部栏问题
iPhone X Topbar issue
我正在尝试将我的应用程序转换为 iPhone X 兼容。我的 viewcontroller 中有一个 table,顶部布局为 20 像素。下面是两种设备的屏幕截图
iPhone 8
iPhone X
现在我在 iPhone x 中得到一个带有彩色背景的白色顶栏。
如果我将 table 的顶部布局设为 0,则单元格会与我不需要的顶部栏重叠。
任何人都可以提出问题所在吗?任何建议都会很棒。
您不应该遵循顶部布局,而应遵循新的安全区域。那么一切都应该没问题。
将主视图控制器的视图背景更改为您想要的颜色:
加入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
}
}
这是结果:
如你所见,这个白色 space 基本上就是 header ,我不知道为什么它会出现在 iPhone X 中。
只是尝试重写方法
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
然后 return 0.01f;
尝试并完美地工作
此处提供的所有答案都是很好的解决方案,但是,您也可以通过自动布局以及将 Tableview 的顶部约束设置为安全区域来实现。这是截图。
这也适用于底部约束。
您还可以参考 this iPhoneX 自动布局指南。
我正在尝试将我的应用程序转换为 iPhone X 兼容。我的 viewcontroller 中有一个 table,顶部布局为 20 像素。下面是两种设备的屏幕截图
iPhone 8
iPhone X
现在我在 iPhone x 中得到一个带有彩色背景的白色顶栏。
如果我将 table 的顶部布局设为 0,则单元格会与我不需要的顶部栏重叠。
任何人都可以提出问题所在吗?任何建议都会很棒。
您不应该遵循顶部布局,而应遵循新的安全区域。那么一切都应该没问题。
将主视图控制器的视图背景更改为您想要的颜色:
加入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
}
}
这是结果:
如你所见,这个白色 space 基本上就是 header ,我不知道为什么它会出现在 iPhone X 中。 只是尝试重写方法
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
然后 return 0.01f;
尝试并完美地工作
此处提供的所有答案都是很好的解决方案,但是,您也可以通过自动布局以及将 Tableview 的顶部约束设置为安全区域来实现。这是截图。
这也适用于底部约束。
您还可以参考 this iPhoneX 自动布局指南。