有没有办法使UIPopOver透明(alpha = 0.75左右)。不幸的是,UIPopOver没有alpha属性。我需要呈现一个弹出窗口,以便它下面的视图仍然部分可见。有什么想法吗?
有没有办法使UIPopOver透明(alpha = 0.75左右)。不幸的是,UIPopOver没有alpha属性。我需要呈现一个弹出窗口,以便它下面的视图仍然部分可见。有什么想法吗?有没有办法使UIPopOver透明(alpha = 0.75左右)。不幸的是,UIPopOver没有alpha属性。我需要呈现一个弹出窗口,以便它下面的视图仍然部分可见。有什么想法吗?
有没有办法使UIPopOver透明(alpha = 0.75左右)。不幸的是,UIPopOver没有alpha属性。我需要呈现一个弹出窗口,以便它下面的视图仍然部分可见。有什么想法吗?iOS5.0开始,可以为UIPopoverController
提供自定义背景。该背景必须派生自UIPopoverBackgroundView
,它提供了UIView
属性,如alpha
。
需要注意的是,名称有点令人困惑-UIPopoverBackgroundView
提供了框架、箭头以及背景图形。
因此,如果您需要一个完全半透明的UIPopoverController
,您只需要提供一个UIPopoverBackgroundView
类,将其alpha
设置为低于1.0
的值。您还需要确保contentViewController的视图是(完全)透明的。
例如:
详情请参见UIPopoverController
的popoverBackgroundViewClass
属性:see the popoverBackgroundViewClass
property of UIPopoverController
popoverBackgroundViewClass
@property (nonatomic, readwrite, retain) Class popoverBackgroundViewClass
讨论
该属性的默认值为nil,表示弹出窗控制器应使用默认的弹出窗外观。将此属性设置为非nil值会导致弹出窗控制器使用指定的类来绘制弹出窗的背景内容。您指定的类必须是UIPopoverBackgroundView的子类。
可用性 在iOS 5.0及更高版本中可用。 声明于 UIPopoverController.h
popoverController.contentViewController.view.alpha = 0.5;
alpha是UIView的一个属性,因此您需要获取popOver的视图,然后将alpha设置为该视图。
目前没有设置 UIPopoverController
透明度的属性。
如果您这样做:popoverController.contentViewController.view.alpha = 0.5;
内部视图和内容将是透明的,而不是 UIPopoverController
本身。
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
// Only works in viewDidAppear()
self.popoverPresentationController?.containerView?.subviews.last?.subviews.first?.alpha = 0
}
if let popoverPresentationController = myController.popoverPresentationController {
popoverPresentationController.backgroundColor = UIColor(white: 1, alpha: 0.5)
}
有关更多详细信息,请参见此SO答案。