如何自定义/设置UIPopoverController的样式

Tho*_*oos 33 customization coding-style ipad uipopovercontroller

我正在使用iPad应用程序而我正在使用UIPopoverControllers.我正在应用程序需要品牌和样式的部分,我想知道如何更改UIPopoverController的颜色/色调?标准是深蓝色,但它需要是另一种颜色..

这可能吗?

招呼,托马斯

And*_*rew 51

可以iOS 5.0开始,通过继承抽象类UIPopoverBackgroundView并将子类分配给实例popoverBackgroundViewClass上的属性UIPopoverController.遗憾的是没有tintColor属性,因为popover需要使用图像作为箭头和边框,以便在动态调整大小时获得平滑的动画.您可以在UIPopoverBackgroundView类参考中了解有关如何自定义UIPopoverController外观的更多信息


Sne*_*ess 21

现在这是不可能的.

这就是我所说的"Box in a Box"模型.你得到的箱的控制箱(的内UIViewControllerUIPopoverController),但你必须在实际酥料饼本身非常有限的控制.在箭头方向和大小之外,你不能改变太多其他东西.还有一个模态效果弹出窗口的选项,当它出现时会使其他所有内容变暗,但我还没有尝试让它工作.

我相信你已经注意到现在没有UIPopover课.

你想听到的答案:
如果你真的想要设计一个不好的,那就写下你自己的.这真的不是那么难.

你想点击的链接:
Cocoacontrols是GitHub上可用的iOS和OSX组件的索引,它们有一些弹出式的东西.

  • 从iOS5开始,您现在可以将UIPopoverBackgroundView子类化,并将您的子类返回到popoverBackgroundViewClass. (7认同)

Ash*_*hok 13

iOS 7引入的backgroundColor属性UIPopoverController影响/包括导航背景颜色以及弹出框的箭头.

@property (nonatomic, copy) UIColor *backgroundColor NS_AVAILABLE_IOS(7_0);
Run Code Online (Sandbox Code Playgroud)

用法示例:

    if ([self.popoverVC respondsToSelector:@selector(setBackgroundColor:)]) {   // Check to avoid app crash prior to iOS 7
        self.popoverVC.backgroundColor = [UIColor greenColor];   // [UIColor colorWithPatternImage:@"..."] doesn't reflect the color on simulator but on device it works!
    }
Run Code Online (Sandbox Code Playgroud)

注意 - 截至目前(iOS 7.0.3),在某些情况下(如使用colorWithPatternImage设置颜色:),模拟器(甚至某些设备)不支持颜色.


Pat*_*ini 8

把帽子扔在这里;

我已经UIPopoverBackgroundView在iOS 5+中使用了s来为s添加一个简单的tintColor属性UIPopoverController.

PCPopoverController:https://github.com/pcperini/PCPopoverController