2016-07-18 9 views

cevap

5

widgetPrimaryVibrancyEffect

.

enter image description here

Swift 3.0 TodayViewController (Bugün:

widgetSecondaryVibrancyEffect ileri küçülme İşte

gereklidir seçme destekleyici metin ve glif ile kullanım için

iki UIButtons ile resmidir Uzantı):

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

bu efektleri örnekte uygulanmıştır nasıl bir ayrıntıya inebilir? Sağlanan efektleri kullanmaya çalıştığımda metin siyah olarak gösterilmeye devam ediyor. – macserv

+1

Kaynak kod ekledim. Temel olarak, her denetimi UIVisualEffectView öğesine eklemeniz gerekir. – CryingHippo

+0

Teşekkürler! Bu, yaptığım şeylere çok benziyor… İlk sorunlarımın, Arayüz Oluşturucu'yu kapsayan efekt görünümü oluşturmasından kaynaklandığı görülüyor. Kod içinde yapmak bu sorunu çözmektedir. – macserv

İlgili konular