【问题标题】:navigationItem.TitleView not working on iOS 10navigationItem.TitleView 在 iOS 10 上不起作用
【发布时间】:2017-01-16 12:55:23
【问题描述】:

导航栏中的标题视图有问题。问题是当我将视图分配给titleView时它没有显示。我尝试使用navigationItem.title = @"eqweqweq";,但没有任何反应。

涉及的这个视图是由代码创建的,我不知道这是不是问题,因为我使用过的其他 ViewController 运行良好。

iOS 10 中是否有我无法使用 titleView 的错误?有时有效,有时无效。

我在谷歌上搜索过,但没有任何帮助。希望有人能帮帮我T_T。

谢谢

【问题讨论】:

  • 如果你设置了titleView,那么标题将不会被使用。您能否展示一些您正在做什么的代码?

标签: ios objective-c xcode ios10 uinavigationitem


【解决方案1】:

一次只使用一个。

设置titleViewnavigationItem,如下所示:

UILabel *lblTitle = [[UILabel alloc] init];
lblTitle.text = @"eqweqweq";
lblTitle.backgroundColor = [UIColor clearColor];

[lblTitle sizeToFit];

self.navigationItem.titleView = lblTitle;

直接设置titlenavigationItem 如下:

navigationItem.title=@"eqweqweq"

【讨论】:

    【解决方案2】:

    确保您设置大小自定义 titleView。例如在设置 titleView 之前使用 titleLabel.sizeToFit()

    let titleLabel = UILabel()
    titleLabel.attributedText = NSAttributedString(string: title, attributes: attributes)
    titleLabel.sizeToFit()  // Important part
    navigationItem.titleView = titleLabel
    

    【讨论】:

      【解决方案3】:

      我终于解决了这个问题!

      问题出在这个函数上:

      extension UINavigationController{
      func applyWhiteEffect(){
              var bounds = self.navigationBar.bounds
              let whiteView = UIView()
              bounds.origin.y = -20
              bounds.size.height = bounds.size.height + 20
              whiteView.frame = bounds
              whiteView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
              whiteView.userInteractionEnabled = false
              whiteView.backgroundColor = UIColor.whiteColor()
              whiteView.tag = 1000
              self.navigationBar.addSubview(whiteView)
              self.navigationBar.backgroundColor = UIColor.clearColor()
              self.navigationBar.sendSubviewToBack(whiteView)
          }
      }
      

      这个函数应用了一个白色的视图,并且在 iOS 10 中出现了问题,所以我改成了这个:

      func applyWhiteEffect(){
              var bounds = self.navigationBar.bounds
              let whiteView = UIView()
              bounds.origin.y = -20
              bounds.size.height = 20
              whiteView.frame = bounds
              whiteView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
              whiteView.userInteractionEnabled = false
              whiteView.backgroundColor = UIColor.whiteColor()
              whiteView.tag = 1000
              self.navigationBar.addSubview(whiteView)
              self.navigationBar.backgroundColor = UIColor.whiteColor()
              self.navigationBar.sendSubviewToBack(whiteView)
          }
      

      将视图更改为仅覆盖状态栏和self.navigationBar.backgroundColor = UIColor.whiteColor()

      谢谢大家帮助我:D

      【讨论】:

        【解决方案4】:

        尝试在 viewWillApear 函数中设置 titleView。

        【讨论】:

          【解决方案5】:

          请试试这个。它对我有用。

          self.title = "eqweqweq"
          

          希望对你有帮助。谢谢

          【讨论】:

          • 提问者想在titleView上实现一个视图
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-01-24
          • 2017-12-26
          • 1970-01-01
          • 2018-01-04
          • 2017-01-28
          • 2020-10-08
          • 2020-12-08
          相关资源
          最近更新 更多