What's different between widgetSecondaryVibrancyEffect and widgetPrimaryVibrancyEffect?
widgetPrimaryVibrancyEffect
For use with select supporting text and glyphs.
widgetSecondaryVibrancyEffect
For use with select supporting text and glyphs where further diminution is required
Here is an illustration with two UIButtons :
Swift 3.0 TodayViewController (Today Extension):
import UIKit
import NotificationCenter
class TodayViewController: UIViewController, NCWidgetProviding {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view from its nib.
self.extensionContext?.widgetLargestAvailableDisplayMode = .expanded
setupStackView()
}
private func setupStackView(){
let stackView = UIStackView(frame: CGRect.zero)
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.alignment = .fill
stackView.axis = .vertical
stackView.distribution = .fillEqually
self.view.addSubview(stackView)
let hConstraints = NSLayoutConstraint.constraints(withVisualFormat: "H:|[stackView]|", options: NSLayoutFormatOptions(rawValue:0), metrics: nil, views: ["stackView":stackView])
let vConstraints = NSLayoutConstraint.constraints(withVisualFormat: "V:|[stackView]|", options: NSLayoutFormatOptions(rawValue:0), metrics: nil, views: ["stackView":stackView])
self.view.addConstraints(hConstraints)
self.view.addConstraints(vConstraints)
stackView.addArrangedSubview(self.effectView(withEffect: UIVibrancyEffect.widgetPrimary(), andButtonTitle: "widgetPrimaryVibrancyEffect"))
stackView.addArrangedSubview(self.effectView(withEffect: UIVibrancyEffect.widgetSecondary(), andButtonTitle: "widgetSecondaryVibrancyEffect"))
}
private func effectView(withEffect effect : UIVisualEffect, andButtonTitle title : String)->UIVisualEffectView{
//Create button
let button = UIButton(type: .custom)
button.translatesAutoresizingMaskIntoConstraints = false
button.setTitle(title, for: .normal)
//Create UIVisualEffectView
let effectView = UIVisualEffectView(effect: effect)
effectView.frame = CGRect.zero
effectView.translatesAutoresizingMaskIntoConstraints = false
effectView.contentView.addSubview(button)
//Constraints
button.leftAnchor.constraint(equalTo: effectView.contentView.leftAnchor).isActive = true
button.topAnchor.constraint(equalTo: effectView.contentView.topAnchor).isActive = true
button.rightAnchor.constraint(equalTo: effectView.contentView.rightAnchor).isActive = true
button.bottomAnchor.constraint(equalTo: effectView.contentView.bottomAnchor).isActive = true
return effectView
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func widgetPerformUpdate(completionHandler: ((NCUpdateResult) -> Void)) {
completionHandler(NCUpdateResult.newData)
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With