Transparent UIPopover

此生再无相见时 提交于 2019-12-17 16:37:37

问题


Is there a way to make the UIPopOver transparent (alpha = 0.75 or so). Unfortunately there is no alpha property for UIPopOver. I need to present a popover so that the view beneath it will still be partially visible. Any ideas


回答1:


popoverController.contentViewController.view.alpha = 0.5;

alpha is an property of an UIView so you need to get the view of the popOver and then set the alpha to that view.




回答2:


Starting with iOS5.0, one can provide a custom background for the UIPopoverController. That background has to be derived from UIPopoverBackgroundView which does provide the normal UIView properties like alpha. Note that the name is a bit confusing - the UIPopoverBackgroundView provides the frame-, the arrow- as well as the background-graphics.

So if you need an entirely semi-transparent UIPopoverController, all you have to do is supply a UIPopoverBackgroundView class which sets its alpha towards something below 1.0. You will also need to make sure that your contentViewController's view is (fully) transparent.

Example:


For details, see the popoverBackgroundViewClass property of UIPopoverController:

popoverBackgroundViewClass

The class to use for displaying the popover background content.

@property (nonatomic, readwrite, retain) Class popoverBackgroundViewClass

Discussion

The default value of this property is nil, which indicates that the popover controller should use the default popover appearance. Setting this property to a value other than nil causes the popover controller to use the specified class to draw the popover’s background content. The class you specify must be a subclass of UIPopoverBackgroundView.

Availability Available in iOS 5.0 and later. Declared In UIPopoverController.h




回答3:


There is currently no property to set the alpha of a UIPopoverController.

If you do: popoverController.contentViewController.view.alpha = 0.5;

The inside view & content will be transparant and not the UIPopoverController itself.

Related question




回答4:


You can now use the backgroundColour property of the popoverPresentationController to do this, e.g.

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

(don't forget to set the view in the popover and controls in that view to transparent as well as appropriate to the effect you are trying to acheive)

See this SO answer for more details.



来源:https://stackoverflow.com/questions/4678456/transparent-uipopover

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!