widgetSecondaryVibrancyEffect和widgetPrimaryVibrancyEffect之间有什么不同?
答案 0 :(得分:6)
<强> widgetPrimaryVibrancyEffect 强>
用于选择支持文字和字形。
<强> widgetSecondaryVibrancyEffect 强>
用于选择支持文字和字形,需要进一步缩小
以下是两个UIButtons的插图:
Swift 3.0 TodayViewController(今日扩展):
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)
}
}