【问题标题】:UINavigationBar elements too close to UIStatusBar [duplicate]UINavigationBar 元素太靠近 UIStatusBar [重复]
【发布时间】:2013-12-24 03:27:13
【问题描述】:

我有一个应用程序,其中 UINavigationBar 不适应 iOS7 定位,我不知道如何让它正确定位。

我没有使用自动布局,但附上了我遇到的问题的屏幕截图:

【问题讨论】:

标签: ios iphone ios7 uinavigationbar statusbar


【解决方案1】:

在你的视图控制器中实现 positionForBar: 方法

- (UIBarPosition)positionForBar:(id <UIBarPositioning>)bar {
    return UIBarPositionTopAttached;
}

将自己设置为工具栏代表,也许你必须将你的工具栏向下移动 20 pt。

【讨论】:

  • 第二部分怎么做?将自己设置为工具栏代表,也许您必须将工具栏向下移动 20 pt。感谢您的帮助
【解决方案2】:

iOS7上的新东西使用全屏布局,如果你想把你的导航栏放在最上面你需要这样实现UIBarPositioningDelegate

-(UIBarPosition)positionForBar:(id<UIBarPositioning>)bar
{
    if ([bar isKindOfClass:[UINavigationBar class]]) {
        return UIBarPositionTopAttached;
    }
    return UIBarPositionAny;
}

不要忘记将导航栏的委托分配给实现此方法的类,即

//self should be the controller that implements the above method.
myNavigationBarReference.delegate = self; 

附: UINavigationBarDelegateUIToolBarDelegate继承UIBarPositioningDelegate

【讨论】:

  • 我将该代码添加到 .m 文件中。那是对的吗?还是应该将其添加到应用程序委托中?我不确定如何将导航栏的委托分配给实现此方法的类。这是我开发的首批应用程序之一,如果它是基本的东西,我深表歉意。感谢您的帮助
  • 您需要对 NavigationBar 的引用,因此为了分配委托,请执行以下操作:`myNavigationBarReference.delegate = self',我已经编辑了答案,希望对您有所帮助。
  • 所以我的代码现在看起来像这样。 -(UIBarPosition)positionForBar:(id&lt;UIBarPositioning&gt;)bar { if ([bar isKindOfClass:[UINavigationBar class]]) { return UIBarPositionTopAttached; } return UIBarPositionAny; navbar.delegate=self; }
  • 但是,它仍然没有正确定位
  • 天啊!请把 navbar.delegate=self;在 viewDidLoad 方法上。
【解决方案3】:

尝试在 viewDidLoad: 方法中添加如下代码

if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)])
{
    self.edgesForExtendedLayout = UIRectEdgeNone;
}

愿它解决您的问题。编码愉快!

【讨论】:

    【解决方案4】:

    您可以在需要的地方以编程方式逐步采用自动布局。你是否在视图中添加了一个导航栏而不是使用导航控制器?如果是这样,您可以添加几行来解决您的问题。

    id topGuide = self.topLayoutGuide;
    NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings (topGuide, yourNavigationBar);
    NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[topGuide]-0-[yourNavigationBar]"
                                                                   options:0
                                                                   metrics:nil
                                                                     views:viewsDictionary];
    [self.view addConstraints:constraints];
    

    如果不是这样,请告诉我你的实现。

    【讨论】:

      猜你喜欢
      • 2015-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多