我有一个应用,其中UINavigationBar没有适应iOS7定位,我坚持如何让它正确定位。
我没有使用自动布局,但附上了我正在获得的问题的屏幕截图:
答案 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。 UINavigationBarDelegate
,UIToolBarDelegate
继承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];
如果不是这样,请告诉我您的实施情况。