widgetPrimaryVibrancyEffect和widgetSecondaryVibrancyEffect

时间:2016-07-18 08:04:32

标签: ios10

widgetSecondaryVibrancyEffect和widgetPrimaryVibrancyEffect之间有什么不同?

enter image description here

1 个答案:

答案 0 :(得分:6)

<强> widgetPrimaryVibrancyEffect

用于选择支持文字和字形。

<强> widgetSecondaryVibrancyEffect

用于选择支持文字和字形,需要进一步缩小

以下是两个UIButtons的插图:

enter image description here

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)
    }

}