美文网首页iOS 知识点iOS Developer
iOS 自定义导航栏滑动返回取消后出现三个小点(标题栏错乱)解决

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

作者: 人不如狗629 | 来源:发表于2016-12-03 10:45 被阅读772次

我们自定义了导航控制器的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}

}}}

相关文章

网友评论

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

    本文链接:https://www.haomeiwen.com/subject/pfqcmttx.html