2017-02-13 6 views
0

Ich versuche, eine benutzerdefinierte UIView-Klasse zu erstellen, dass ich die Klasse für einige Ansichten in meiner App ändern kann. Ich möchte, dass die Ansicht rund ist und den Unschärfeeffekt hat. Ich kann es über func zur Arbeit bringen, die spezifisch den Ausgang-Namen referenziert, aber gerade die Klasse der Ansicht ändern möchte, damit sie wiederverwendbar ist.Benutzerdefinierte UIView-Klasse mit Unschärfe

import UIKit 

class RoundedBlur: UIView { 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
     self.addRoundedBlur() 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     self.addRoundedBlur() 
    } 

    func addRoundedBlur() { 
     let roundedBlurView = UIView() 

     let blur = UIVisualEffectView(effect: UIBlurEffect(style: UIBlurEffectStyle.light)) 
     blur.frame = roundedBlurView.bounds 
     blur.layer.cornerRadius = 0.5 * roundedBlurView.bounds.size.width 
     blur.clipsToBounds = true 

     blur.autoresizingMask = [.flexibleWidth, .flexibleHeight] 
     roundedBlurView.insertSubview(blur, at: 0) 
    } 
} 
+0

Also ... was ist das Problem? – dfd

+0

Also ... was ist UIVisualEffectView? –

Antwort

0

Sie müssen keine Unteransicht erstellen, um dies zu erreichen. Sie können einfach auf die Klasse selbst verweisen. Auf diese Weise können Sie neue Ansichten erstellen, indem Sie diese erneut verwenden.

class RoundedBlur: UIView { 

    override init(frame: CGRect) { 
    super.init(frame: frame) 
    self.addRoundedBlur() 
    } 

    required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 
    self.addRoundedBlur() 
    } 

    func addRoundedBlur() { 
    let blur = UIVisualEffectView(effect: UIBlurEffect(style: UIBlurEffectStyle.light)) 
    self.frame = self.bounds 
    self.layer.cornerRadius = 10.0 
    self.clipsToBounds = true 

    blur.autoresizingMask = [.flexibleWidth, .flexibleHeight] 
    self.insertSubview(blur, at: 0) 

    } 
}