QMUI_iOS icon indicating copy to clipboard operation
QMUI_iOS copied to clipboard

在iOS 13默认的modal效果下,导航栏的高度问题

Open jiasongs opened this issue 5 years ago • 4 comments

Bug 表现 在iOS 13默认的modal效果下,导航栏的高度是56,非44,但是我在QMUI里没有找到相关的api判断

截图 图片 图片

如何重现 使用iOS 13默认的modal效果

其他信息

  • 设备: 模拟器 iPhone 11 Pro
  • iOS 版本: iOS 13.0
  • Xcode 版本: Xcode 11.0
  • QMUI 版本: 4.0.4

jiasongs avatar Dec 11 '19 07:12 jiasongs

目前是这样解决的: 图片

jiasongs avatar Dec 11 '19 07:12 jiasongs

目前 QMUICommonDefines.h 里的宏定义 NavigationBarHeight 在这种情况下是错误的,后续修复。 看到你的示例代码里貌似是在 UIViewController 里,那应该用 UIViewController(QMUI).qmui_navigationBarMaxYInViewCoordinator 更合理?

MoLice avatar Dec 11 '19 08:12 MoLice

目前 QMUICommonDefines.h 里的宏定义 NavigationBarHeight 在这种情况下是错误的,后续修复。 看到你的示例代码里貌似是在 UIViewController 里,那应该用 UIViewController(QMUI).qmui_navigationBarMaxYInViewCoordinator 更合理?

UIViewController(QMUI).qmui_navigationBarMaxYInViewCoordinator建议在viewDidLayoutSubviews、viewWillAppear里使用,我是在initSubviews里用Masonry布局,用此方法的话还需要在viewDidLayoutSubviews里再更新一下约束。我们目前业务上也不用适配横屏,所以导航栏高度在此页面中基本是不会变的,所以也无须更新约束,用静态常量值更合适一些。

jiasongs avatar Dec 11 '19 09:12 jiasongs

在这种modal的情况下,可以手势下拉dismiss,此时- (BOOL)shouldPopViewControllerByBackButtonOrPopGesture:(BOOL)byPopGesture不起作用,因为此方法只处理了push情况下的手势和返回按钮,建议实现UIAdaptivePresentationControllerDelegate- (void)presentationControllerDidAttemptToDismiss:(UIPresentationController *)presentationController- (BOOL)presentationControllerShouldDismiss:(UIPresentationController *)presentationController等方法来适配此类情况。

jiasongs avatar Dec 11 '19 11:12 jiasongs