自定义UIView覆盖iPhone上的UITabBar而不是iPad

时间:2012-09-28 18:13:54

标签: iphone ipad uiview uitabbar uiwindow

我正在创建一个覆盖窗口的自定义uiView。它有点像导航控制器中的诱饵uiview。所以我必须这样做以覆盖导航栏......长篇故事......

以下是设置方式。

self.searchPopDown.frame = CGRectMake(0, 20, self.navigationController.view.frame.size.width, self.navigationController.view.frame.size.height-20);

    self.searchPopDown.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

20是为了补偿状态栏。

然后我只是将视图作为子视图添加到应用程序窗口。

//this will add the view ontop of a modalViewController and support rotation!
UIWindow* window = [UIApplication sharedApplication].keyWindow;
if (!window) {
    window = [[UIApplication sharedApplication].windows objectAtIndex:0];
}

if ([[[window subviews] objectAtIndex:0] isKindOfClass:[SVProgressHUD class]]){
    //There is a chance that the window will be the SVProgressHUD in this case we need to get the main window.

    window = [[UIApplication sharedApplication].windows objectAtIndex:0];
}
    [[[window subviews] objectAtIndex:0] addSubview:self.searchPopDown];

所有这一切都很棒,花花公子。但是我注意到了一些奇怪的事情。在iPhone上,这个视图最终会被调整大小以覆盖我应用程序底部的UITabBar。但是在iPad上它可以正确调整大小以补偿UITabBar。有什么想法吗?

由于

=================

以下是一些描述此问题的屏幕截图。当视图加载假视图到所有内容时,这就是它的样子。视图显示(就用户而言只是视图和导航栏上的按钮略有改变。当你搜索到这个假视图消失时,显示下面的真实视图与搜索结果。在ipad上假视图不不要覆盖标签栏。为什么它也不能在iphone上执行此操作?

iphone tabbar being covered at bottom

view disappears as expected

ipad version works correctly

==========

编辑2 另一个奇怪的事情。我正在生成日志消息以获得导航控制器的高度。它改变49取决于我是否正常显示或作为模态视图出现并且没有标签栏。

所以日志说431应该是正确的高度。我进入界面构建器并设置一个简单的粉红色视图,在431测量它看起来很棒:)但是当我手动将大小设置为431时,它不起作用。我必须将大小设置为298才能使其正常工作......很奇怪......

看到粉红色的酒吧?它实际上是431高......日志说这就是我的看法..但它不是:/

pink size comparison

============

编辑:3

我已将此跟踪到imagebackground,并且气泡徽标调整不正确...

1 个答案:

答案 0 :(得分:2)

我必须检查imageview所在的父视图中的“剪辑子视图”...修复了问题......