我试图用模糊透明的背景来表达一种观点,而不是现有观点。我能够在演示动画中获得期望的效果,但是一旦模糊的视图被完全呈现,它就变得不透明了。
以下是我展示它的方式:
if (!UIAccessibilityIsReduceTransparencyEnabled()) {
UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *blurEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
blurEffectView.frame = self.view.bounds;
[blurEffectView setOpaque:NO];
[self.view insertSubview:blurEffectView atIndex:0];
[blurEffectView setTranslatesAutoresizingMaskIntoConstraints:false];
}在我模糊的视野中,我把背景色设置为清晰的颜色,不透明的设置为否。有什么想法吗?
发布于 2015-02-06 02:34:35
最后,我编写了一个定制的演示控制器。从没有找到一种用标准演示文稿来做到这一点的方法。
在我想要效果viewDidLoad的视图中:
//Custom Modal Presentation
[self setModalPresentationStyle:UIModalPresentationCustom];
//blur the controlContainerView
if (!UIAccessibilityIsReduceTransparencyEnabled()) {
UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:[self blurStyle]];
UIVisualEffectView *blurEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
blurEffectView.frame = self.controlContainerView.bounds;
[blurEffectView setOpaque:NO];
[self.controlContainerView insertSubview:blurEffectView atIndex:0];
[blurEffectView setTranslatesAutoresizingMaskIntoConstraints:false];
}调用上述视图:
//in .h
@property (nonatomic) id<UIViewControllerTransitioningDelegate> transitioningDelegate;
//In .m
BlurViewController *blurVC = [self.storyboard instantiateViewControllerWithIdentifier:@"blurView"];
_transitioningDelegate = [[MyCustomOverlayDelegate alloc] init];
[blurView setModalPresentationStyle:UIModalPresentationCustom];
[blurView setTransitioningDelegate:[self transitioningDelegate]];
[blurView setBlurStyle:UIBlurEffectStyleLight];
[self presentViewController: blurView animated:YES completion:nil];您还需要导入表示控制器类的整个堆栈。对我来说,这些是OverlayDelegate,OverlayTransitionAnimator和OverlayPresentationController。这才是真正的工作所在。
如果可以的话,可以查看WWDC 2014会话228“查看演示控制器内部”。自定义演示文稿约在一半的时间内进行。这是我过去的习惯,我的自定义堆栈和合理地直接前进。
发布于 2016-06-16 10:43:08
请注意,任何具有UIVisualEffectView的UIBlurEffect将是不透明的,如果“减少透明度”可访问性设置是打开的。
(设置>一般>可访问性>增强对比度>降低透明度)
(这就是您实际使用if (!UIAccessibilityIsReduceTransparencyEnabled())语句检查的内容。)
发布于 2015-08-28 12:10:39
从文件中:
UIBlurEffect对象对UIVisualEffectView后面的内容应用模糊效果。
所以我认为问题在于你清晰的backgroundColor。如果您的UIVisualEffectView后面有某种内容或颜色,它应该可以工作。
UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleExtraLight];
UIVisualEffectView *blurredView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];这个简单的代码片段确实适用于我。在ViewController中,我想显示我称之为[[self view] addSubView:blurredView]的模糊效果
https://stackoverflow.com/questions/28141557
复制相似问题