2016-07-18 16 views

Antwort

5

widgetPrimaryVibrancyEffect

Für die Verwendung mit ausgewählten Begleittext und Glyphen.

widgetSecondaryVibrancyEffect

Für die Verwendung mit ausgewählten Begleittext und Glyphen, wo eine weitere Verminderung

hier erforderlich ist, ist eine Darstellung mit zwei UIButtons:

enter image description here

Swift 3.0 TodayViewController (Heute 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) 
    } 

} 
+0

Können Sie ein bisschen auf erarbeiten, wie diese Effekte in Ihrem Beispiel angewendet wurden? Der Text wird weiterhin schwarz dargestellt, wenn ich versuche, die bereitgestellten Effekte zu verwenden. – macserv

+1

Ich habe den Quellcode hinzugefügt. Grundsätzlich müssen Sie jedes Steuerelement der UIVisualEffectView hinzufügen. – CryingHippo

+0

Danke! Dies sieht viel wie das, was ich am Ende tun ... meine erste Probleme scheinen durch die Schaffung der umschließenden Wirkung Ansicht innerhalb Interface Builder verursacht wurden. In diesem Code zu beheben, behebt dieses Problem. – macserv