UINavigationBar元素太靠近UIStatusBar

时间:2013-12-06 17:09:24

标签: ios iphone ios7 uinavigationbar statusbar

我有一个应用,其中UINavigationBar没有适应iOS7定位,我坚持如何让它正确定位。

我没有使用自动布局,但附上了我正在获得的问题的屏幕截图:

enter image description here

4 个答案:

答案 0 :(得分:1)

在视图控制器中实现positionForBar:method

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

将自己设为工具栏代理,也许您必须将工具栏向下移动20磅。

答案 1 :(得分:0)

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; 

P.S。 UINavigationBarDelegateUIToolBarDelegate继承UIBarPositioningDelegate

答案 2 :(得分:0)

尝试在viewDidLoad:method

中添加以下代码
if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)])
{
    self.edgesForExtendedLayout = UIRectEdgeNone;
}

它可以解决您的问题。快乐的编码!!

答案 3 :(得分:0)

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

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];

如果不是这样,请告诉我您的实施情况。