为现有视图增添活力
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)
行将其杀死。没有它,视图将以模糊的背景显示(就像预期的那样),但有了它,什么都不会显示。以上是关于为现有视图增添活力的主要内容,如果未能解决你的问题,请参考以下文章