为现有视图添加活力

时间:2014-11-26 14:33:56

标签: ios swift xcode6

我对Swift很新,目前正在努力实现具有模糊和活力效果的模态。

let modalViewController = FavoritesViewController()
modalViewController.modalPresentationStyle = .OverFullScreen
self.presentViewController(modalViewController, animated: true, completion: nil)

这是我创建模态视图控制器的方法,然后执行以下viewDidLoad()方法:

override func viewDidLoad() {
    super.viewDidLoad()

    // Instantiate a view from the FavoritesView.xib and add
    // it to this Controller's view
    let optionsView = UINib(nibName: "FavoritesView", bundle: nil).instantiateWithOwner(self, options: nil)[0] as UIView
    view.addSubview(optionsView)

    // Create a UIVisualEffectView with a blur effect and
    // insert it to this Controller's view
    let blurEffect = UIBlurEffect(style: .Dark)
    let blurView = UIVisualEffectView(effect: blurEffect)
    blurView.frame = self.view.bounds
    blurView.autoresizingMask = .FlexibleWidth | .FlexibleHeight
    blurView.setTranslatesAutoresizingMaskIntoConstraints(true)
    view.insertSubview(blurView, atIndex: 0)

    // Create a UIVisualEffectView with a vibrancy effect
    let vibrancyView = UIVisualEffectView(effect: UIVibrancyEffect(forBlurEffect: blurEffect))
    vibrancyView.setTranslatesAutoresizingMaskIntoConstraints(false)

    vibrancyView.contentView.addSubview(optionsView) 
    // This is the part I'm unsure of.

    blurView.contentView.addSubview(vibrancyView)
}

使用此代码可以创建和显示模糊,但活力似乎不起作用。根据我的理解,首先optionsView(包含标签和按钮的模态视图)被添加到Controller的视图中,然后将模糊插入其后面。

最后创建了Vibrancy View,optionsView被添加到活力视图的contentView(我认为这是必要的,因此活力效果可以应用于视图标签等)。然后将此Vibrancy View添加到blurView。

但是,标签和按钮仍然不会显示应用的活力效果。我是否需要对.xib - 文件中的UI元素进行任何调整才能应用Vibrancy或是否应该自动应用Vibrancy?或者我错过了其他什么?

1 个答案:

答案 0 :(得分:0)

您好,只需在viewWillAppear

上试一试

viewDidLoad不适合屏幕上的元素(UIView等等)。