Nit*_*hin 6 iphone uikit ipad uipopovercontroller ios
有没有办法让UIPopOver透明(alpha = 0.75左右).不幸的是,UIPopOver没有alpha属性.我需要提供一个弹出窗口,以便它下面的视图仍然是部分可见的.有任何想法吗
从iOS5.0开始,可以为其提供自定义背景UIPopoverController.必须从中提取背景UIPopoverBackgroundView,提供正常的UIView属性,如alpha.请注意,名称有点令人困惑 - UIPopoverBackgroundView提供框架,箭头以及背景图形.
因此,如果你需要一个完全半透明的UIPopoverController,你所要做的只是提供一个UIPopoverBackgroundView类,它将其设置alpha为下面的东西1.0.您还需要确保contentViewController的视图是(完全)透明的.
例:

有关详细信息,请参阅以下popoverBackgroundViewClass属性UIPopoverController:
popoverBackgroundViewClass
Run Code Online (Sandbox Code Playgroud)
用于显示弹出窗口背景内容的类.
@property (nonatomic, readwrite, retain) Class popoverBackgroundViewClass
Run Code Online (Sandbox Code Playgroud)
讨论
此属性的默认值为nil,表示弹出控制器应使用默认的弹出框.将此属性设置为nil以外的值会导致弹出控制器使用指定的类来绘制popover的背景内容.您指定的类必须是UIPopoverBackgroundView的子类.
可用性适用于iOS 5.0及更高版本.在UIPopoverController.h中声明
popoverController.contentViewController.view.alpha = 0.5;
Run Code Online (Sandbox Code Playgroud)
alpha是UIView的属性,因此您需要获取popOver的视图,然后将alpha设置为该视图.
小智 5
对于 iOS 13:
似乎有一个不透明的子视图,具有_UIPopoverStandardChromeView类型的深灰色背景,没有 API 方法来控制它(Apple bug?)。为了使弹出窗口透明,您可能需要将下面的技巧添加到呈现的视图控制器中。它必须在viewDidAppear(_:)调用中或之后完成。它在viewWillAppear(_:)或更早的调用中不起作用。
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
// Only works in viewDidAppear()
self.popoverPresentationController?.containerView?.subviews.last?.subviews.first?.alpha = 0
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6188 次 |
| 最近记录: |