UINavigationBar 元素太靠近 UIStatusBar [重复]
Posted
技术标签:
【中文标题】UINavigationBar 元素太靠近 UIStatusBar [重复]【英文标题】:UINavigationBar elements too close to UIStatusBar [duplicate] 【发布时间】:2013-12-24 03:27:13 【问题描述】:我有一个应用程序,其中 UINavigationBar 不适应 ios7 定位,我不知道如何让它正确定位。
我没有使用自动布局,但附上了我遇到的问题的屏幕截图:
【问题讨论】:
见:developer.apple.com/library/ios/qa/qa1797/_index.html 【参考方案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;
附: UINavigationBarDelegate
、UIToolBarDelegate
继承UIBarPositioningDelegate
。
【讨论】:
我将该代码添加到 .m 文件中。那是对的吗?还是应该将其添加到应用程序委托中?我不确定如何将导航栏的委托分配给实现此方法的类。这是我开发的首批应用程序之一,如果它是基本的东西,我深表歉意。感谢您的帮助 您需要对 NavigationBar 的引用,因此为了分配委托,请执行以下操作:`myNavigationBarReference.delegate = self',我已经编辑了答案,希望对您有所帮助。 所以我的代码现在看起来像这样。-(UIBarPosition)positionForBar:(id<UIBarPositioning>)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];
如果不是这样,请告诉我你的实现。
【讨论】:
以上是关于UINavigationBar 元素太靠近 UIStatusBar [重复]的主要内容,如果未能解决你的问题,请参考以下文章
防止自定义 UINavigationBar 元素在视图之间更改
自定义 UIToolbar 太靠近 iPhone X 上的主页指示器
UIPageViewController 页面控件太靠近 iPhone X iOS 11 上的主页栏
UIBarButton 未在 UINavigationBar 中显示