将backgroundColor
设置为[UIColor blackColor]
至UIPopoverController
时,一切正常并在iOS7和iOS8上正确显示。
我通过
呈现 [aPopover presentPopoverFromBarButtonItem:self.navigationItem.rightBarButtonItem
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
设备旋转后,弹出窗口backgroundColor
将重置为默认颜色(在这种情况下为白色)。
在iOS 7中不会发生这种情况。仅限iOS 8
我已经尝试了
- (void)presentPopoverFromRect:(CGRect)rect
inView:(UIView *)view
permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections
animated:(BOOL)animated;
并使用UIPopoverControllerDelegate
重新定位并出现同样的问题。
最后信息:仅在UINavigationBar上显示popover时出现此问题,但在常规UIView
或任何UIButton
上显示时不会出现此问题。
感谢您的帮助
答案 0 :(得分:7)
iOS8上的popover也遇到了这样的问题。除了旋转之外,当弹出窗口改变其大小时(例如,当键盘显示为编辑弹出窗口中的某些文本字段时),重置背景颜色。
关键的观察结果是,问题通常发生在弹出窗口上,箭头位于内容的边缘(当从全屏视图控制器的UIBarButtonItem
呈现弹出窗口时就是这种情况)。
因此,我的解决方法是修改sourceRect
,使弹出框的箭头远离其角落。例如,在我的特定情况下,我有一个带有自定义33x33视图的条形按钮项目(用作sourceView
),并通过将sourceRect
设置为{20, 30, 0, 0}
而不是自定义视图来解决问题&# 39; s界限(虽然我认为确切的所需偏移量可能取决于弹出窗口的大小)。
答案 1 :(得分:0)
对于iOS 8.2(xcode 6.2):打开键盘时出现问题,popovercontroller变为白色。键盘消失后,它也与白色背景相同。
我使用以下代码来解决我的问题。
AccountType
答案 2 :(得分:0)
我在iOS 9.1中也遇到过这个问题。偏移源矩形是一个很好的观察和解决方法,但对我来说,它似乎没有影响,直到偏移达到16左右,这意味着箭头看起来有点错位。
为避免这种情况,最后我使用GIKPopoverBackgroundView提供自定义背景视图(UIPopoverBackgroundView
)。我从UIKit中提取了相关的popover背景图像(参见下面的[1]),以获得与iOS 9相同的popover形状,并根据我的需要修改它们的颜色。
笨拙的,有点繁琐地设置了图像的上限,但它确实有效。
[1]使用cartool从/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks/UIKit获取_UIPopoverViewBlurMaskBackground *。框架/ Artwork.bundle / Assets.car