Coder Social home page Coder Social logo

zynavigationitemspace's Introduction

ZYNavigationItemSpace

iOS 设置自定义导航栏按钮左/右间距为0

zynavigationitemspace's People

Contributors

guanjiapo avatar

Stargazers

Jivan avatar niekang avatar gobeyond avatar Michael.Yang avatar rensq avatar

Watchers

Michael.Yang avatar  avatar

zynavigationitemspace's Issues

崩溃问题

UINavigationBar (ZYItemHitRect)

  • (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {

    UIView *view = [super hitTest:point withEvent:event];
    if (point.x<= DP_SCREEN_WIDTH * 0.5) {
    for (UIBarButtonItem *buttonItem in self.topItem.leftBarButtonItems) {
    if (buttonItem.customView == nil) { continue; }
    /// 根据实际情况(自己项目UIBarButtonItem的层级)获取button
    UIButton *itemBtn = nil;
    if ([buttonItem.customView isKindOfClass:[UIButton class]]) {
    itemBtn = (UIButton *)buttonItem.customView;
    } else if ([buttonItem.customView isKindOfClass:[UIView class]]) {
    itemBtn = (UIButton *)buttonItem.customView.subviews.firstObject;
    }
    /// 将button的坐标系从父视图转化到UINavigationBar上
    CGRect newRect = [itemBtn convertRect:[itemBtn hitFrame] toView:self];
    /// 如果触摸点在button的响应范围内,让button响应此次触摸事件
    if (CGRectContainsPoint(newRect, point)) {
    view = itemBtn;
    break;
    }
    }
    } else {
    for (UIBarButtonItem *buttonItem in self.topItem.rightBarButtonItems) {
    if (buttonItem.customView == nil) { continue; }
    UIButton *itemBtn = nil;
    if ([buttonItem.customView isKindOfClass:[UIButton class]]) {
    itemBtn = (UIButton *)buttonItem.customView;
    } else if ([buttonItem.customView isKindOfClass:[UIView class]]) {
    itemBtn = (UIButton *)buttonItem.customView.subviews.firstObject;
    }

         //在此需要增加一处判断  
          if (![itemBtn isKindOfClass:[UIButton class]]) {
              break;
          }
    
          CGRect newRect = [itemBtn convertRect:[itemBtn hitFrame] toView:self];
          if (CGRectContainsPoint(newRect, point)) {
              view = itemBtn;
              break;
          }
      }
    

    }
    return view;
    }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.