在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];
设备旋转后,popoverbackgroundColor
重置为默认颜色(本例中为白色)
这在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);