大佬教程收集整理的这篇文章主要介绍了ios – Popover控制背景颜色奇怪的行为,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我想要的外观:
似乎如果我在显示弹出窗口之前更改背景颜色,它似乎正常工作并转换,但如果我在显示之前没有设置弹出窗口颜色,则在显示它具有框效果后更改它.我还注意到其他似乎随机发生的情况,但我无法解释导致它的原因(我的真实应用程序比这个演示要复杂得多).这是相关代码:
- (IBACtion)buttonPressed:(id)sender { UIViewController *vc = [[UIViewController alloc] init]; UIButton *b = [[UIButton alloc] init]; [b addTarget:self action:@SELEctor(innerButtonPressed) forControlEvents:UIControlEventTouchUpInside]; [b settitle:@"Button" forState:UIControlStateNormal]; [b settitleColor:[UIColor blueColor] forState:UIControlStateNormal]; [b setFrame:CGRectMake(0,100,100)]; [vc.view addSubview:b]; _innerNav = [[UINavigationController alloc] initWithRootViewController:vc]; _popOver = [[UIPopoverController alloc] initWithContentViewController:_innerNav]; //If this line is here,everything works fine _popOver.BACkgroundColor = [UIColor yellowColor]; [_popOver presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; //If this line is here (and the above line is commented out),the transition will look wrong //_popOver.BACkgroundColor = [UIColor yellowColor]; } -(void)innerButtonPressed { _controller = [[UIViewController alloc] init]; UIButton *b = [[UIButton alloc] init]; [b addTarget:self action:@SELEctor(test) forControlEvents:UIControlEventTouchUpInside]; [b settitle:@"Make Purple" forState:UIControlStateNormal]; [b settitleColor:[UIColor blueColor] forState:UIControlStateNormal]; [b setFrame:CGRectMake(0,200,200)]; [_controller.view addSubview:b]; [_popOver setBACkgroundColor:[UIColor orangeColor]]; [_innerNav pushViewController:_controller animated:YES]; } -(void)test{ _popOver.BACkgroundColor = [UIColor purpleColor]; }
知道是什么导致了这个问题吗?什么步骤安全地更新弹出窗口的背景颜色而不进入这种状态?我有一个完整的项目来证明这个问题,我认为你可以将项目附加到问题上,但显然你不能.如果有人想要它我可以在某个地方托管它.
> UIPopoverController仅在显示BACkgroundColor属性的有效值时才显示此奇怪行为.由此我猜测,因为UIPopoverController的BACkgroundColor属性默认为nil,所以必须使用与BACkgroundColor属性有效时不同的绘图代码.
>触发某种重绘(e.x.设置popoverContentSizE)将使彩色框叠加消失(看起来它会剪切彩色图层).
结论:暂时我会在呈现UIPopoverController之前设置BACkgroundColor,然后根据需要更新它.如果这不是一个选项,请尝试更新UIPopoverController,使其重绘(作为注释:我无法让它看起来很好,而且看起来很糟糕).最后,我会report it as a bug去苹果.
我希望这有帮助.
以上是大佬教程为你收集整理的ios – Popover控制背景颜色奇怪的行为全部内容,希望文章能够帮你解决ios – Popover控制背景颜色奇怪的行为所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。