IQKeyboardManagerSwift 黑框问题

问题:

在使用IQKeyboardManagerSwift时,如果自定义了UINavigationController,并设置了navigationBar.isTranslucent = false 即导航栏不透明,如果页面弹出键盘后再返回,就会发现返回的时候ViewController的视图往下移了,出现一条逐渐变高的黑框

如果在viewDidLoad里面设置了textField.becomeFirstResponder()  push出界面后,在点击关闭键盘就会出现底部有一条黑框

分析:

以上分析了未收起键盘的时候的视图层级结构发现:如图

收起键盘后的视图层级结构发现:

发现ViewController整体上移了64px,所以下方出现了黑框

分析:从iOS7开始,UIViewController默认使用全屏布局,并增加了edgesForExtendedLayout、automaticallyAdjustsScrollViewInsets及extendedLayoutIncludesOpaqueBars这三个属性用于控制布局,相信就不再介绍了看别人的对比:edgesForExtendedLayout、automaticallyAdjustsScro... - 简书

解决方法:

如果是使用的storyboard直接勾选控制器的 Under Opaque Bars 选项即可

如果是代码在viewDidLoad方法里面 extendedLayoutIncludesOpaqueBars = true即可

如果控制器太多,我想到的最直接的是在自定义的UINavigationController的重写pushViewController方法里面设置

viewController.extendedLayoutIncludesOpaqueBars = true

即可

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。