【问题标题】:Custom button Image not visible on navigation bar iOS 7.1自定义按钮图像在导航栏 iOS 7.1 上不可见
【发布时间】:2014-05-06 04:35:31
【问题描述】:

我在导航栏上添加了自定义按钮。这是现在的代码,我的问题是在 iOS7 中我可以看到带有文本的按钮图像,而在 iOS 7.1 中,图像不显示,只显示文本。

-(void)addBackButton{

    self.navigationItem.hidesBackButton = YES;

    [backButtonView removeFromSuperview];

   if (backButtonView) {
       [backButtonView release];
      backButtonView = nil;
   }

    backButtonView = [[UIView alloc] initWithFrame:CGRectMake(0,6,70,30)];

    NSString *strText = @"Back";

     btnBack = [[UIButton alloc] initWithFrame:CGRectMake(2,0, 70, 31)];

     [btnBack setTitle:strText forState:UIControlStateNormal];
     btnBack.titleLabel.font = [UIFont fontWithName:@"HelveticaNeue-Medium" size:17];
     btnBack.titleLabel.textColor = IOS7ColorBtnBackText;
     [btnBack setImage:[UIImage imageNamed:@"Left_Arrow.png"] forState:UIControlStateNormal];

     [btnBack addTarget:self action:@selector(btnBack:) forControlEvents:UIControlEventTouchUpInside];

     [backButtonView addSubview:btnBack];
     [btnBack release];

      [self.navigationController.navigationBar addSubview:backButtonView];


}

【问题讨论】:

    标签: iphone ios7 uinavigationcontroller uibarbuttonitem ios7.1


    【解决方案1】:

    您可以将自定义按钮分配给左或右按钮,而不是将其添加为导航视图中的子视图,这也有效

      UIButton *backbtn=[[UIButton alloc]initWithFrame:CGRectMake(20,5,42, 42)];
      [backbtn setImage:[UIImage imageNamed:@"arrow.png"] forState:UIControlStateNormal];
      [backbtn setTitle:@"Login" forState:UIControlStateNormal];
      [backbtn addTarget:self action:@selector(didTapBackButton:) forControlEvents:UIControlEventTouchUpInside];
      UIBarButtonItem *barbtn=[[UIBarButtonItem alloc]initWithCustomView:backbtn];
      self.navigationItem.leftBarButtonItem=barbtn;
    

    【讨论】:

      【解决方案2】:
      [self.navigationItem setHidesBackButton:YES];
      

      这确实有效,但你在这里犯了错误

      [self.navigationController.navigationBar addSubview:backButtonView];

      ///// 您创建自定义按钮的代码放在这里

      self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:BackButton];

      【讨论】:

        【解决方案3】:

        创建自定义按钮并将其作为自定义视图添加到导航左栏按钮项中,如下所示:

        let btnShowMenu = UIButton()
        let image: UIImage = UIImage(named: "requiredImageName")!
        btnShowMenu.setImage(image, for: UIControlState.normal)
        btnShowMenu.frame = CGRect(x: 0, y: 0, width: 15, height: 15)
        btnShowMenu.addTarget(self, action: #selector(addAnAction(_:)), for: UIControlEvents.touchUpInside)
        let customBarItem = UIBarButtonItem(customView: btnShowMenu)
        self.navigationItem.leftBarButtonItem = customBarItem;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-09-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-03-19
          • 1970-01-01
          相关资源
          最近更新 更多