首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >背景透明的UIModalPresentationFormSheet?

背景透明的UIModalPresentationFormSheet?
EN

Stack Overflow用户
提问于 2012-01-12 07:43:18
回答 2查看 3.6K关注 0票数 4

本质上,这里我希望模式表单是透明的,这样我就可以看到它后面的UIView (它是全屏的)。

这个是可能的吗?将UIView设置为不透明,并且[UIColor clearColor]backgroundColor不起作用。

我注意到当我从UIModalPresentationFormSheet切换到另一种表示风格时,我的视图的背景确实是透明的。

我哪里错了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-24 01:53:07

据我所知,这已经不可能了。它曾经是,但苹果已经禁用了这一功能。

我所做的就是像普通一样创建我的UIView,并将它们作为子视图添加到我的主视图中。我不得不放弃我的表格,然后再做这个演示。

票数 2
EN

Stack Overflow用户

发布于 2014-01-08 01:58:41

这对我很有效:

代码语言:javascript
复制
[modalView.superview setBackgroundcolor:[UIColor clearColor]];

它仍然会透明地使背景视图变暗,但不会用纯灰色覆盖它。

...............................................

iOS 8更新

我之前的解决方案不再适用于iOS 8。要让这样的东西在iOS 8上运行,需要很多步骤。所以我创建了一个很好的可重用的解决方案: ModalController https://github.com/koreyhinton/ModalController

它真的很容易使用,并且可以自动关闭。

代码语言:javascript
复制
let modal = ModalController()
modal.content = myCustomView
presentViewController(modal, animated: true, completion: nil)

如果你对实现细节感兴趣,我是这样做的:

让你的模式视图控制器占据整个屏幕,主视图的背景将在清晰和半暗之间切换。然后你将有一个内容视图,它将是一个模式,它将以纯色背景居中。我还使用了表示风格:.OverCurrentContext,它是我在init方法中指定的。

代码语言:javascript
复制
var content = UIView()

override func viewDidLoad() {
    super.viewDidLoad()
    view.backgroundColor = UIColor.clearColor()
    content.frame = CGRect(x:0, y:0, width:300, height:300)
    content.backgroundColor = UIColor.blackColor()
    view.addSubview(content)
}

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    view.backgroundColor = UIColor.blackColor().colorWithAlphaComponent(0.7)
}

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)
    view.backgroundColor = UIColor.clearColor()
}

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    content!.center = view.center
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8828340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档