I took 15 minutes to try and figure this out, and the way I found was this:
let image = UIImage(named: "cliff")
let imageView = UIImageView(frame: view.bounds)
imageView.contentMode = .ScaleAspectFill
imageView.image = image
view.addSubview(imageView)
let label = UILabel(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height/2))
label.text = "Hello, world"
label.font = UIFont.systemFontOfSize(42.0, weight: 6.0)
label.textAlignment = .Center
label.center = CGPoint(x: view.frame.width/2, y: view.frame.height-36.0)
label.textColor = UIColor.darkTextColor()
view.addSubview(label)
let blurView = UIVisualEffectView(effect: UIBlurEffect(style: .Dark))
blurView.frame = view.bounds
blurView.layer.masksToBounds = true
blurView.layer.mask = label.layer
view.addSubview(blurView)
let vibrancyView = UIVisualEffectView(effect: UIVibrancyEffect(forBlurEffect: UIBlurEffect(style: .Dark)))
vibrancyView.frame = view.bounds
blurView.contentView.addSubview(vibrancyView)
let label2 = UILabel(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height/2))
label2.text = "Hello, world"
label2.font = UIFont.systemFontOfSize(42.0, weight: 6.0)
label2.textAlignment = .Center
label2.center = CGPoint(x: view.frame.width/2, y: view.frame.height-36.0)
label2.textColor = UIColor.darkTextColor()
view.addSubview(label2)
vibrancyView.contentView.addSubview(label2)
I just made it real quick in a playground so it's not very pretty. However, a mask is required.