编译对5.1 SDK强制新的UIPopoverController“幻灯片”演示文稿的popup – 如何禁用?

编译我的iPad应用程序对5.1 SDK(发行版本)导致UIPopoverController显示自己使用新的“幻灯片input”从左侧的演示文稿。 这完全打破了我的popover演示文稿,依靠有一个“黑色”风格的标题和一定的高度。 我已经尝试将presentsWithGesture设置为NO ,但似乎只能禁用滑动手势,并没有停止演示风格。

同样的应用程序,不用重新编译,但在iOS 5.1上运行,使用旧的popover演示风格。 所以我知道iOS 5.1仍然支持向后兼容的方法。 我怎样才能select激活popover的陈述?

不幸的是,这对我的应用程序非常重要。

否则,有没有办法在新的popup窗口上获得“黑色”风格的标题?


虽然我的应用程序中有一个UISplitViewController,但它不负责显示popup窗口。 相反,我使用这个代码:

  [self.popoverController presentPopoverFromRect:ipadButtonMenu.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 

这个问题是来自苹果开发者论坛的交叉post。 我希望有人有答案。


预期介绍: 在这里输入图像说明

在iOS 5.1 SDK下编译后的演示文稿: 在这里输入图像说明

这个改变似乎没有想到。 当然,我们会在使用滑动的细节视图中破坏任何东西。 真棒!

要回答你的“带回黑色”的问题,如果它只是一个顶级的导航栏颜色的问题,你可以使用外观代理。 例如:

 [[UINavigationBar appearance] setTintColor:[UIColor blackColor]]; 

外观代理可以根据需要非常明确地设置; 它有一个容器模型。 有一个非常好的WWDCvideo。

关于刚刚用新的编译器回复旧的行为,坦率地说,我也很想知道。 新行为还会在主视图中打破操作表单; 以前,当主视图出现在popover中时,他们会做正确的事情。 现在,这是一个断言失败。

好吧,我有同样的问题,这可能会有所帮助,它将删除到达屏幕底部的黑色背景….

你显示你的popoup后调用这个…

 - (void)removeInnerShadow { UIWindow *window = [[[UIApplication sharedApplication] delegate] window]; for (UIView *windowSubView in window.subviews) { if ([NSStringFromClass([windowSubView class]) isEqualToString:@"UIDimmingView"]) { for (UIView *dimmingViewSubviews in windowSubView.subviews) { for (UIView *popoverSubview in dimmingViewSubviews.subviews) { popoverSubview.layer.shadowOpacity=0; popoverSubview.layer.masksToBounds = NO; if([NSStringFromClass([popoverSubview class]) isEqualToString:@"_UIPopoverSlidingChromeView"]) { popoverSubview.layer.shadowOpacity=0; popoverSubview.layer.masksToBounds = NO; } } } } } } 

有可能恢复! – 用MGSplitViewController。 它给你一个类似的API的iOS控制,但老popover和更多的控制。

截至iOS 5.1

从文档:

在iOS 5.1中,UISplitViewController类在呈现左视图时(以前只在Mail中看到)采用滑动呈现样式。 演示文稿通过委托方法提供的现有栏button项目或右侧视图中的轻扫手势启动时使用此样式。 获取此行为不需要额外的API采用,并且所有现有的API(包括由委托人提供的UIPopoverController实例)都将继续像以前一样工作。

小工作在这里 – >