1

我正在创建一个覆盖窗口的自定义 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标签栏被底部覆盖

视图按预期消失

ipad版本正常工作

==========

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

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

看到粉红色的酒吧了吗?它实际上是 431 高……日志说这就是我的观点……但事实并非如此:/

粉色尺寸对比

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

编辑:3

我已将其追溯到图像背景,气泡徽标的大小调整不正确...

4

1 回答 1

2

我不得不检查图像视图所在的父视图上的“剪辑子视图”......解决了问题......

于 2012-10-05T19:59:18.330 回答