iOS 自定义导航栏滑动返回取消后出现三个小点(标题栏错乱)解决方案

我们自定义了导航控制器的leftItem后导致系统的右滑返回手势失效,其原因是系统的返回手势代理对象被置空了, 然后我通过重新设置返回手势的代理后(这点网上很多人介绍过,不谈了), 右滑返回手势有效了, 但是如果右滑到一半取消, 导航栏上标题就会出现三个小点 "..."  

出现的问题

我的解决方案: 通过查看图层结构,找到这三个小点对应的控件, 设置为隐藏;

查看图层结构

代码很简单(本文后面更新了更简单的解决方法):

//在viewController中:

override func viewDidAppear(animated: Bool) {

super.viewDidAppear(animated)

guard let subviews = navigationController?.navigationBar.subviews else {

return

}

for view in subviews {

if view.isKindOfClass(NSClassFromString("UINavigationItemButtonView")!) {

view.hidden = true

}}}


本文发布一个月后又发现了更好的解决方法,代码如下:(上面那种解决方案的代码全部不需要了, 只需要重写navgationbar的这个方法就可以了)

extension UINavigationBar {

//解决导航栏滑动返回时出现三个小白点的BUG:

public override func addSubview(view: UIView) {

super.addSubview(view)

if NSClassFromString("UINavigationItemButtonView") != nil {

if view.isKindOfClass(NSClassFromString("UINavigationItemButtonView")!) {

view.hidden = true}

}}}

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

推荐阅读更多精彩内容