透明的UIPopover

有没有办法使UIPopOver透明(alpha = 0.75左右)。 不幸的是,UIPopOver没有alpha属性。 我需要提供一个popover,以便它下面的视图仍然是部分可见的。 有任何想法吗

popoverController.contentViewController.view.alpha = 0.5; 

alpha是UIView的一个属性,所以你需要得到popOver的视图,然后将Alpha设置为该视图。

从iOS5.0开始,可以为UIPopoverController提供一个自定义背景。 该背景必须从UIPopoverBackgroundView派生,它提供了像alpha一样的普通UIView属性。 请注意,名称有点令人困惑 – UIPopoverBackgroundView提供了框架, UIPopoverBackgroundView以及背景图片。

所以如果你需要一个完全半透明的UIPopoverController ,你所要做的就是提供一个UIPopoverBackgroundView类,它将alpha设置为低于1.0东西。 您还需要确保您的contentViewController的视图是(完全)透明的。

例:

在这里输入图像说明


有关详细信息, 请参阅popoverBackgroundViewClass属性 :

 popoverBackgroundViewClass 

用于显示popup窗口背景内容的类。

 @property (nonatomic, readwrite, retain) Class popoverBackgroundViewClass 

讨论

这个属性的默认值是nil,这表明popover控制器应该使用默认的popup窗口的外观。 将该属性设置为非nil值会导致popover控制器使用指定的类来绘制popup窗口的背景内容。 您指定的类必须是UIPopoverBackgroundView的子类。

可用性iOS 5.0及更高版本中提供。 在UIPopoverController.h中声明

目前没有属性来设置UIPopoverController的alpha。

如果你这样做: popoverController.contentViewController.view.alpha = 0.5;

内部视图和内容将是透明的,而不是UIPopoverController本身。

相关的问题

你现在可以使用popoverPresentationController的backgroundColour属性来做到这一点,例如

  if let popoverPresentationController = myController.popoverPresentationController { popoverPresentationController.backgroundColor = UIColor(white: 1, alpha: 0.5) } 

(不要忘记将弹窗中的视图和该视图中的控件设置为透明以及适合您试图达到的效果)

看到这个回答更多的细节。