2016-09-15 6 views
4

影付きのUIViewにぼかし効果を与える方法は?私が行う場合:iOS10影付きのUIViewぼかし効果

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view. 
    let layer = self.view.layer; 
    layer.shadowColor = UIColor.black.cgColor 
    layer.shadowOpacity = 1.0 
    layer.shadowOffset = CGSize(width: 0.0, height: 0.5) 
    layer.shadowRadius = 5.0 

    self.view.backgroundColor = UIColor.clear 

    let blurEffect = UIBlurEffect(style: .light) 
    let sideEffectView = UIVisualEffectView(effect: blurEffect) 
    sideEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 

    sideEffectView.frame = self.view.bounds; 
    self.view.addSubview(sideEffectView) 
} 

影が、無ぼかし効果がありますが、私はこれを行う場合:

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view. 
    self.view.backgroundColor = UIColor.clear 

    let blurEffect = UIBlurEffect(style: .light) 
    let sideEffectView = UIVisualEffectView(effect: blurEffect) 
    sideEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 

    sideEffectView.frame = self.view.bounds; 
    self.view.addSubview(sideEffectView) 
} 

をぼかし効果が、無影があります。

ありがとうございました!

答えて

1

ありがとう:そう、同じ目的を果たすUIVisualEffectsViewcontentViewに追加UIViewを追加することに頼っ、影でlayerを追加できませんでした。私はまた別の解決策を見つけました。あなたと、それは本当に影(無半径...)ではありません。

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.view.backgroundColor = UIColor.clear 

    let blurEffect = UIBlurEffect(style: .light) 
    let sideEffectView = UIVisualEffectView(effect: blurEffect) 
    sideEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 

    sideEffectView.frame = self.view.bounds 
    self.view.addSubview(sideEffectView) 

    let shadowView = UIView(frame: CGRect(x: 0.0, y: 0, width: self.view.bounds.size.width, height: self.view.bounds.size.height)) 
    shadowView.translatesAutoresizingMaskIntoConstraints = false 
    shadowView.backgroundColor = UIColor.white 
    shadowView.layer.masksToBounds = false 
    shadowView.layer.shadowOffset = CGSize(width: 2.5, height: 2.5) 
    shadowView.layer.shadowOpacity = 1.0 
    shadowView.layer.shadowRadius = 2.5 

    self.view.insertSubview(shadowView, at: 0) 

    // Set constraints programmatically, as this view is animatable 
    NSLayoutConstraint(item: shadowView, attribute: NSLayoutAttribute.trailing, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.trailingMargin, multiplier: 1.0, constant: 0.0).isActive = true 
    NSLayoutConstraint(item: shadowView, attribute: NSLayoutAttribute.top, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.topMargin, multiplier: 1.0, constant: 0.0).isActive = true 
    NSLayoutConstraint(item: shadowView, attribute: NSLayoutAttribute.bottom, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.bottomMargin, multiplier: 1.0, constant: 0.0).isActive = true 
    NSLayoutConstraint(item: shadowView, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1.0, constant: 5.0).isActive = true 
} 

Blur effect with shadow

+0

うん、残念ながらあなたは正しいです。私はちょうどナビゲーションバーのドロップシャドウ/ボーダーを複製する必要があり、その解決策は十分だった。あなたは間違いなくあなたの答えを正しいものとしてマークしなければなりません、それはSOの奨励された行動です。 –

1

私はあなたと同じ問題を偶然見つけました。答えを

let borderViewFrame = CGRect(x: 0, y: bounds.maxY, width: bounds.width, height: 0.5) 
let borderView = UIView(frame: borderViewFrame) 
borderView.backgroundColor = UIColor.black.withAlphaComponent(0.25) 
contentView.clipsToBounds = false 
contentView.addSubview(borderView) 
関連する問題