在iOS 8上旋转后,UIPopoverController backgroundColor恢复为默认值

在iOS 8上旋转后,UIPopoverController backgroundColor恢复为默认值,ios,objective-c,ipad,uipopovercontroller,Ios,Objective C,Ipad,Uipopovercontroller,将backgroundColor设置为[UIColor blackColor]设置为UIPopoverController时,一切正常,并在iOS7和iOS8上正确显示 我通过 [aPopover presentPopoverFromBarButtonItem:self.navigationItem.rightBarButtonItem permittedArrowDirections:UIPopoverArrowDirectionAny

backgroundColor
设置为
[UIColor blackColor]
设置为
UIPopoverController
时,一切正常,并在iOS7和iOS8上正确显示

我通过

    [aPopover presentPopoverFromBarButtonItem:self.navigationItem.rightBarButtonItem
                     permittedArrowDirections:UIPopoverArrowDirectionAny
                                     animated:YES];
设备旋转后,popover
backgroundColor
重置为默认颜色(本例中为白色)

这在iOS 7中不会发生。仅在iOS 8上

我已经试过了

- (void)presentPopoverFromRect:(CGRect)rect 
                        inView:(UIView *)view 
      permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections 
                      animated:(BOOL)animated;
使用
UIPopoverControllerDelegate
进行重新定位,也会出现同样的问题

最新信息:我只有在UINavigationBar上显示popover时才出现此问题,但在常规的
UIView
或任何
UIButton
上显示popover时没有出现此问题


谢谢你的帮助

我在iOS8上的popover也有这样的问题。除旋转外,当popover更改其大小时(例如,当键盘显示以编辑popover中的某些文本字段时),背景颜色也会重置。 关键的观察结果是,问题通常发生在箭头位于内容边缘的弹出框上(当从全屏视图控制器的
uibarbuttoneim
显示弹出框时就是这种情况)。 因此,我的解决办法是修改
sourceRect
,使popover的箭头刚好离开它的一角。例如,在我的特殊情况下,我有一个带有自定义33x33视图的条形按钮项(用作
sourceView
),通过将
sourceRect
设置为
{20,30,0,0}
而不是自定义视图的边界(尽管我认为确切的所需偏移量可能取决于popover的大小)来解决这个问题(xcode 6.2):打开键盘时出现问题,popovercontroller变为白色。键盘消失后,它也与白色背景相同

我使用以下代码来解决我的问题

[objPopovercontroller presentPopoverFromRect:CGRectOffset(CGRectMake(SCREEN_WIDTH-40, 60, 0, 0), -1, 0) 
                                      inView:self.view 
                    permittedArrowDirections:UIPopoverArrowDirectionUp 
                                    animated:YES]; 

// SCREEN_WIDTH = (IS_IPAD?1024:[UIScreen mainScreen].bounds.size.width)

在iOS 9.1中,我也遇到了这个问题。偏移源rect是一个很好的观察和解决方法,但对我来说,直到偏移量达到16左右,它似乎才产生效果,这意味着箭头看起来有点错位

为了避免这种情况,最后我提供了一个自定义背景视图(
UIPopoOverBackgroundView
)。我从UIKit中提取了相关的popover背景图像(请参见下面的[1]),以获得与iOS 9相同的popover形状,并修改了它们的颜色以满足我的需要

笨手笨脚的,还有一点为图片设置帽子插图,但它做到了


[1]用于从/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks/UIKit.framework/Artwork.bundle/Assets.car获取UIPopOverview Blurmaskbackground*。我得到了相同的行为。找到解决方案了吗?我发现如果视图被定位了因此,箭头被连接到左边或右边的硬气泡上-我试图对此进行描述,以避免发布可能会过期的图像链接-然后遇到了这个问题。例如,箭头正好位于边缘,没有圆角。将其从边缘偏移一个像素为我修复:
sourceRect=CGRectOff设置(按钮删除,-1,0);