2

我试图在页面进入 PageViewController 时淡入 UIBlur 背景。

例如,页面 1 在背景上没有 UI 模糊,但我希望页面 2 在页面出现时淡化控制器背景上的暗模糊。

当前发生的是页面出现,半秒后应用模糊。

这是我目前第 2 页的内容:

    @IBOutlet weak var blurEffect: UIVisualEffectView!


        override func viewDidLoad() {
            super.viewDidLoad()
            let overlay = blurEffect
            overlay.effect = nil
        }

        override func viewDidAppear(animated: Bool) {
            let overlay = blurEffect
            overlay.effect = nil
            UIView.animateWithDuration(0.5) {
                overlay.effect = UIBlurEffect(style: .Dark)
            }
        }
4

2 回答 2

0

目前尚不清楚您真正想要什么,但是如果您想在另一个视图控制器上呈现一个视图控制器,那么您正在模糊呈现视图控制器作为呈现视图控制器的背景。你应该:

  1. 将呈现的视图控制器的视图的背景颜色更改为清除颜色。
  2. 在呈现的视图控制器的视图层次结构的底部添加 UIVisualEffectView。
  3. 将 segue 更改为模态 segue 或以模态方式呈现视图控制器。
  4. 将 segue 的呈现样式更改为当前上下文或设置呈现的视图控制器的呈现viewController.modalPresentationStyle = .OverCurrentContext
  5. 将过渡更改为交叉溶解或垂直覆盖 viewController.modalTransitionStyle = .CoverVertical

我相信您也可以以其他方式应用此技术,尽管它的性能很昂贵。

于 2016-04-18T19:38:58.837 回答
0

UIView 类的以下属性是可动画的:

@property 框架

@property 边界

@物业中心

@property 转换

@property 阿尔法

@property 背景颜色

@property 内容拉伸

苹果文档

于 2016-04-18T19:13:21.343 回答