Fot*_*los 18 overlap uisearchbar uistatusbar ios7
我(就像其他人一样)遇到了与其他人一样的状态栏重叠问题,有点麻烦,这就是为什么我打开一个关于此的新问题.
似乎有一些机制让UISearchBar知道在哪里定位它自己,这完全没有问题.
jaredsinclair在这里回答(iOS 7状态栏在iPhone应用程序中回到iOS 6默认风格?),详细解释了Apple Engineers如何允许我们为我们的应用程序引入逻辑,以便尽可能地融入用户的环境.
我仔细检查了我的应用程序中的每个UIViewController并进行了最轻微的修改.
在大多数情况下,我能够使用下面的代码来解决问题
// Do any additional setup after loading the view.
if ([self respondsToSelector:@selector(edgesForExtendedLayout)]){
self.edgesForExtendedLayout = UIRectEdgeNone;
}
Run Code Online (Sandbox Code Playgroud)
然而,无论我在隐藏UINavigationBar的特定视图中做什么,这都不会起作用.

基于SO中找到的解决方案,我能够通过向这个特定的UIViewController添加以下逻辑来解决这个问题
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame];
viewFrame.origin.y = viewFrame.origin.y+statusBarFrame.size.height;
}
Run Code Online (Sandbox Code Playgroud)
这会将UIViewController的n个像素向下推"取决于"状态栏的高度.
这里显示了这种效果

问题是,当我进入搜索字段时,UISearchBar会在顶部添加一个20px的填充,从而抵消整个UI.

这让我得出结论,UISearchBar试图调整自己,巧合的是它调整自己与状态栏高度完全相同的数量.
如果我没有破解该位置,一旦我进入搜索字段,则此自动调整将UISearchBar整齐地对齐在状态栏下方.
我希望我已经详细说明了我的困惑,我想知道是否有人对解决方案有任何想法.
Sun*_*aru 27
如果navigationBar可见,请在ViewDidLoad中执行以下操作:
self.edgesForExtendedLayout = UIRectEdgeNone;
Run Code Online (Sandbox Code Playgroud)
如果导航栏被隐藏,请在ViewDidLoad中执行以下操作:
通过将它们移动20pt来调整所有UIView元素
| 归档时间: |
|
| 查看次数: |
16812 次 |
| 最近记录: |