使用keyboardLayoutGuide时如何忽略安全区域,使列表在键盘收起时铺满屏幕?
解决KeyboardLayoutGuide默认安全区域内边距问题
你需要实现全屏列表,使用keyboardLayoutGuide约束时,默认会应用安全区域内边距,导致键盘未显示时列表无法延伸到屏幕最底部。当前使用的约束代码如下:
NSLayoutConstraint.activate([ collectionView.topAnchor.constraint(equalTo: view.topAnchor), collectionView.bottomAnchor.constraint(equalTo: view.keyboardLayoutGuide.topAnchor), collectionView.leadingAnchor.constraint(equalTo: view.leadingAnchor), collectionView.trailingAnchor.constraint(equalTo: view.trailingAnchor) ])

解决方案
keyboardLayoutGuide的topAnchor默认会适配安全区域底部内边距,要禁用这个行为,只需将约束中的view.keyboardLayoutGuide.topAnchor替换为view.keyboardLayoutGuide.unsafeAreaLayoutGuide.topAnchor即可。
修改后的完整约束代码:
NSLayoutConstraint.activate([ collectionView.topAnchor.constraint(equalTo: view.topAnchor), collectionView.bottomAnchor.constraint(equalTo: view.keyboardLayoutGuide.unsafeAreaLayoutGuide.topAnchor), collectionView.leadingAnchor.constraint(equalTo: view.leadingAnchor), collectionView.trailingAnchor.constraint(equalTo: view.trailingAnchor) ])
这样修改后,键盘未显示时,列表底部会直接延伸到屏幕最底端;键盘弹出时,列表也能正确贴合键盘顶部,同时不会保留多余的安全区域内边距。
内容的提问来源于stack exchange,提问作者Richard Witherspoon
相关产品推荐
相关产品推荐

