美文网首页
iOS 完美解决到导航栏左右按钮隐藏问题

iOS 完美解决到导航栏左右按钮隐藏问题

作者: SoaringHeart | 来源:发表于2017-11-07 16:49 被阅读59次

    通过UIButton的Hidden属性隐藏,估计没有比这更简单的了

    -(UIButton *)createBarBtnItemWithTitle:(NSString *)title imageName:(NSString *)imageName isLeft:(BOOL)isLeft target:(id)target aSelector:(SEL)aSelector isHidden:(BOOL)isHidden{
      if (!isLeft) {
        
        if (imageName) {
            UIButton *rightBtn = [UIButton buttonWithType:UIButtonTypeCustom];
            rightBtn.frame = CGRectMake(0, 0, 30, 30);
            rightBtn.exclusiveTouch = YES;
            UIImage * image = [UIImage imageNamed:imageName];
            [rightBtn setImage:image forState:UIControlStateNormal];
            //    [rightBtn setImageEdgeInsets:UIEdgeInsetsMake(0, -10, 0, 10)];
            [rightBtn addTarget:target action:aSelector forControlEvents:UIControlEventTouchUpInside];
            
            rightBtn.titleLabel.text = imageName;//执行点击动作时做判断条件
            rightBtn.tag = kTAG_BTN_RightItem;
            rightBtn.hidden = isHidden;
            UIBarButtonItem *rightItem = [[UIBarButtonItem alloc]initWithCustomView:rightBtn];
            self.navigationItem.rightBarButtonItem = rightItem;
            return rightBtn;
        }else{
            CGSize titleSize = [self sizeWithText:title fontSize:15 maxWidth:kSCREEN_WIDTH];
            //            DDLog(@"size %@",NSStringFromCGSize(titleSize));
            
            
            UIButton *rightBtn = [UIButton buttonWithType:UIButtonTypeCustom];
            if (title.length <= 2) {
                titleSize.width = 35;
            }else{
                rightBtn.titleLabel.adjustsFontSizeToFitWidth = YES;
                rightBtn.titleLabel.minimumScaleFactor = 1;
            }
            
            rightBtn.frame = CGRectMake(0, 0, titleSize.width, 30);
            rightBtn.titleEdgeInsets = UIEdgeInsetsMake(-10, -20, -10, -20);
            rightBtn.exclusiveTouch = YES;
            
            [rightBtn setTitle:title forState:UIControlStateNormal];
            [rightBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
            rightBtn.titleLabel.font = [UIFont systemFontOfSize:16];
            //    [rightBtn setImageEdgeInsets:UIEdgeInsetsMake(0, -10, 0, 10)];
            rightBtn.tag = kTAG_BTN_RightItem;
            rightBtn.hidden = isHidden;
            
            [rightBtn addTarget:target action:aSelector forControlEvents:UIControlEventTouchUpInside];
            
            UIBarButtonItem *rightItem = [[UIBarButtonItem alloc]initWithCustomView:rightBtn];
            self.navigationItem.rightBarButtonItem = rightItem;
            return rightBtn;
            
        }
        
    }else{
        
        if (imageName) {
            UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
            backBtn.frame = CGRectMake(0, 0, 30, 30);
            backBtn.exclusiveTouch = YES;
            UIImage * image = [UIImage imageNamed:imageName];
            [backBtn setImage:image forState:UIControlStateNormal];
            //    [leftBtn setImageEdgeInsets:UIEdgeInsetsMake(0, -10, 0, 10)];
            [backBtn addTarget:target action:aSelector forControlEvents:UIControlEventTouchUpInside];
            
            backBtn.titleLabel.text = imageName;//执行点击动作时做判断条件
            backBtn.tag = kTAG_BTN_BackItem;
            backBtn.hidden = isHidden;
            
            UIBarButtonItem *backBtnItem = [[UIBarButtonItem alloc]initWithCustomView:backBtn];
            self.navigationItem.leftBarButtonItem = backBtnItem;
            return backBtn;
            
        }else{
            
            if (!title) {
                CGSize iconSize = CGSizeMake(18, 29);
                iconSize = CGSizeMake(32, 32);
                
                CGSize btnSize = CGSizeMake(30, 30);
                
                UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
                backBtn.frame = CGRectMake(0, 0, btnSize.width, btnSize.height);
                [backBtn setImage:[UIImage imageNamed:@"img_btnBack.png"] forState:UIControlStateNormal];
                [backBtn setImageEdgeInsets:UIEdgeInsetsMake((btnSize.height - iconSize.height)/2.0, (btnSize.width - iconSize.width)/2.0, (btnSize.height - iconSize.height)/2.0, (btnSize.width - iconSize.width)/2.0)];
                
                [backBtn addTarget:target action:aSelector forControlEvents:UIControlEventTouchUpInside];
                backBtn.tag = kTAG_BTN_BackItem;
                backBtn.hidden = isHidden;
    
                UIBarButtonItem *leftItem = [[UIBarButtonItem alloc]initWithCustomView:backBtn];
                self.navigationItem.leftBarButtonItem = leftItem;
                return backBtn;
            }else{
                UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
                backBtn.frame = CGRectMake(0, 0, 30, 30);
                [backBtn setImage:nil forState :UIControlStateNormal];
                [backBtn setTitle:title forState:UIControlStateNormal];
                [backBtn addTarget:target action:aSelector forControlEvents:UIControlEventTouchUpInside];
                backBtn.tag = kTAG_BTN_BackItem;
                backBtn.hidden = isHidden;
                
                UIBarButtonItem *backBtnItem = [[UIBarButtonItem alloc] initWithCustomView:backBtn];
                [backBtn addTarget:target action:aSelector forControlEvents:UIControlEventTouchUpInside];
                self.navigationItem.leftBarButtonItem = backBtnItem;
                return backBtn;
                
            }
        }
    }
    }

    相关文章

      网友评论

          本文标题:iOS 完美解决到导航栏左右按钮隐藏问题

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