呈现一个 alpha 为 0.5 的控制器

Posted

技术标签:

【中文标题】呈现一个 alpha 为 0.5 的控制器【英文标题】:present a controller with alpha is 0.5 【发布时间】:2014-09-04 09:41:05 【问题描述】:

vc命名的新UIViewController为例,然后调用

[self presentViewController:vc animated:YES completion:nil];

我希望 vc 看起来像透明或 alpha = 0.5,

我知道下面的代码可以做到这一点,但是现在的动画消失了,我想要透明动画,有什么想法吗?

self.modalPresentationStyle = UIModalPresentationCurrentContext;

【问题讨论】:

如果新视图不是不透明的,请小心为它们设置动画 - 有时 ios 使用不透明来隐藏其内置动画的工作原理,引入半透明可能看起来很糟糕。 【参考方案1】:

我不确定这是最好的解决方案,但您绝对可以非常简单地自己制作动画:

NewViewController *newVC = [[NewViewController alloc] init];
newVC.view.frame = CGRectMake(0, SCREEN_HEIGHT, self.view.frame.size.width, self.view.frame.size.height);
newVC.view.alpha = 0.5;    

[self addChildViewController:newVC];
[self.view addSubview:newVC.view];

[UIView animateWithDuration:0.3 animations:^
    newVC.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
 completion:nil];

【讨论】:

【参考方案2】:

如果给视图设置不透明度,则所有按钮、标签等也将具有不透明度。

请按照以下步骤操作...

为查看提供透明颜色。

self.view.backgroundColor = [UIColor clearColor];

然后添加 uiimageview 并将背景色设为透明色,然后将不透明度设为 0.5。

myImage.backgroundColor = [UIColor clearColor];
myImage.alpha = 0.5;

【讨论】:

我希望呈现的 ViewController 看起来是透明的,而不是当前的 ViewController。 @Geaka :好的,那就用yourView.backgroundColor

以上是关于呈现一个 alpha 为 0.5 的控制器的主要内容,如果未能解决你的问题,请参考以下文章

将带有 alpha 1 的 UIView 放在带有 alpha 0.5 的 UIView 之上

动画视图的 alpha 从 0 到 0.5

为啥我不能从另一个控制器中删除视图?

iPad上的模态表单在Swift中透明?

StoryBoard 处理继承的视图控制器

场景视图控制栏