首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >UISearchBar与iOS中的状态栏重叠

UISearchBar与iOS中的状态栏重叠
EN

Stack Overflow用户
提问于 2013-09-24 15:54:47
回答 6查看 16.9K关注 0票数 18

我(就像这里的每个人一样)遇到了其他人一样的状态栏重叠问题,只是有点扭曲,这就是为什么我要对这个问题提出一个新的问题。

似乎有一些机制可以让UISearchBar知道自己在哪里定位,这是完全不正常的。

jaredsinclair answer here (iOS 7 status bar back to iOS 6 default style in iPhone app?),非常详细地解释了苹果工程师如何允许我们在应用程序中引入逻辑,以便尽可能多地融入用户的环境。

我仔细检查了应用程序中的每个UIViewController,并尽可能地进行了最轻微的修改。

在大多数情况下,我能够使用下面的代码来解决这个问题,我发现这些代码跨越了几个SO答案

// Do any additional setup after loading the view.
if ([self respondsToSelector:@selector(edgesForExtendedLayout)]){
    self.edgesForExtendedLayout = UIRectEdgeNone;
}

但是,无论我在隐藏UINavigationBar的特定视图中执行什么操作,这都不会起作用。

基于所找到的解决方案,因此我能够通过向这个特定的UIViewController添加以下逻辑来解决这个问题

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
    CGRect statusBarFrame =  [[UIApplication sharedApplication] statusBarFrame];
    viewFrame.origin.y = viewFrame.origin.y+statusBarFrame.size.height;
}

这将“根据”状态栏的高度将UIViewController n像素向下推。

其效果如下所示

的问题是,当我进入搜索字段时,UISearchBar会自动在顶部添加一个20px的填充,这会偏移整个UI。

这使我得出结论,UISearchBar试图自我调整,巧合的是,它自我调整的程度与状态栏的高度完全相同。

如果我没有修改位置,一旦我进入搜索栏,这个自动调整就会将UISearchBar整齐地对齐到状态栏下面。

我希望我已经详细说明了我的困惑,我想知道是否有人对解决方案有任何想法。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-10-04 17:33:19

如果navigationBar可见,请在ViewDidLoad中执行以下操作:

self.edgesForExtendedLayout = UIRectEdgeNone;

如果navigationBar处于隐藏状态,请在ViewDidLoad中执行以下操作:

通过将所有UIView元素移位20pt来调整它们

票数 27
EN

Stack Overflow用户

发布于 2013-09-24 20:39:32

也在这个问题上苦苦挣扎。您需要将其放入您的ViewControllers viewDidLoad方法中。

if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
    self.edgesForExtendedLayout = UIRectEdgeNone;
}

这个应该可以解决这个问题。这在iOS 7过渡指南中也有说明。https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/AppearanceCustomization.html#//apple_ref/doc/uid/TP40013174-CH15-SW1

票数 4
EN

Stack Overflow用户

发布于 2013-09-27 18:39:33

UISearchBar为你想要的东西提供了一个委托方法。只需将其从顶部放置20px即可。

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

不幸的是,它不能与UISearchDisplayController一起工作。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18975920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档