为现有视图增添活力

Posted

技术标签:

【中文标题】为现有视图增添活力【英文标题】:Adding vibrancy to existing view 【发布时间】:2014-11-26 14:33:55 【问题描述】:

我对 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(包含标签和按钮的模态视图)添加到控制器的视图中,然后在其后面插入模糊。

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

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

【问题讨论】:

【参考方案1】:

你好,试试viewWillAppear

viewDidLoad 不是屏幕上元素的正确位置(UIView 等等..)

【讨论】:

它仍然没有应用活力效果。 viewDidLoad 中也不存在该视图,因为它是通过 UINib instantiateWithOwner 从附加的 .xib 加载的。 vibrancyView.contentView.addSubview(optionsView) 行将其杀死。没有它,视图将以模糊的背景显示(就像预期的那样),但有了它,什么都不会显示。

以上是关于为现有视图增添活力的主要内容,如果未能解决你的问题,请参考以下文章

日加满绿色能量饮品为生活增添活力

UITableView 上的模糊和活力效果

荣耀play5T活力版参数配置 荣耀play5T活力版怎么样

jQuery复习—用jQuery为页面添加活力

旅游特色文化为城市的夜晚注入活力

高通推出新的智能手表芯片,为安卓系统注入新的活力