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

iGr*_*Dav 4 objective-c ipad uipopovercontroller ios

当设置backgroundColor[UIColor blackColor]UIPopoverController一切都很好,并在iOS7和iOS8上正确地呈现.

我通过它呈现它

    [aPopover presentPopoverFromBarButtonItem:self.navigationItem.rightBarButtonItem
                     permittedArrowDirections:UIPopoverArrowDirectionAny
                                     animated:YES];
Run Code Online (Sandbox Code Playgroud)

设备旋转后,弹出窗口backgroundColor将重置为默认颜色(在本例中为白色).

这在iOS 7中不会发生.仅适用于iOS 8

我已经尝试过了

- (void)presentPopoverFromRect:(CGRect)rect 
                        inView:(UIView *)view 
      permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections 
                      animated:(BOOL)animated;
Run Code Online (Sandbox Code Playgroud)

并且重新定位使用UIPopoverControllerDelegate和发生相同的问题.

最后的信息:我只有在UINavigationBar上显示弹出窗口时才出现此问题,但在常规UIView或任何时候显示弹出窗口时都没有UIButton.

谢谢你的帮助

小智 7

iOS8上的popover也有这样的问题.除了旋转之外,当弹出窗口改变其大小时(例如,当键盘显示为编辑弹出框中的某些文本字段时),重置背景颜色.关键的观察结果是,问题通常发生在弹出窗口上,它的箭头位于内容的边缘(这是从UIBarButtonItem全屏视图控制器呈现弹出框的情况).因此我的解决方法是修改sourceRect足够的弹出箭头从角落移开.例如,在我的特定情况下,我有一个带有自定义33x33视图的条形按钮项目(用作sourceView),并通过设置而不是自定义视图的边界sourceRect来修复问题{20, 30, 0, 0}(尽管我认为确切的所需偏移量可能取决于弹出窗口的大小).