2016-06-16 2 views
1

を働いていない:UIVisualEffectViewは、私は次のコードを使用して私の見解にぼかし効果を追加しようとしている

let visualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .Light)) as UIVisualEffectView 
    visualEffectView.frame = containerView.bounds 
    containerView.addSubview(visualEffectView) 
    containerView.userInteractionEnabled = true 
    containerView.bringSubviewToFront(visualEffectView) 
    visualEffectView.alpha = 1.0 

は、しかし、私はすべての変更が表示されません。

UPDATE

私の謝罪が、私は元の質問の私の意図は明らかにされないと思います。私が達成したいことは、次のようなものです:

私の画面には、画面全体がいっぱいになるUIImageViewがあります。次に、画面の下部には、UIViewなどのボタンを保持するコンテナがあります。私がしたいことは、コンテナビューにぼかし効果を追加することで、その後ろのUIImageViewがぼやけています。 。ですから、基本的には、私のcontainerViewのアルファ値を0.5に設定しました。半透明で、その背後にあるイメージを見ることができます。私が今したいのは、containerViewの背後にある画像がぼやけていることです。

enter image description here

CURRENT EFF:

enter image description here

CODE:

extension UIButton{ 

func setImage(image: UIImage?, inFrame frame: CGRect?, forState state: UIControlState){ 
    self.setImage(image, forState: state) 

    if let frame = frame{ 
     self.imageEdgeInsets = UIEdgeInsets(
      top: frame.minY - self.frame.minY, 
      left: frame.minX - self.frame.minX, 
      bottom: self.frame.maxY - frame.maxY, 
      right: self.frame.maxX - frame.maxX 
     ) 
    } 
} 

} 



class SingleImageFeedView: UIViewController { 

lazy var mainImageView : UIImageView = { 
    let imageView = UIImageView() 
    imageView.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.width * 1.3) 
    imageView.contentMode = UIViewContentMode.ScaleAspectFill 
    imageView.backgroundColor = UIColor.clearColor() 
    imageView.image = UIImage(named: "pizza") 
    return imageView 
}() 

let containerView : UIView = { 
    let this = UIView(frame: CGRectMake(0,0, 600,150)) 
    this.backgroundColor = UIColor.clearColor() 
    this.layer.cornerRadius = 5 
    this.layer.borderColor = UIColor(red: (69/255.0), green: (209/255.0), blue: (153/255.0), alpha: 1.0).CGColor 
    this.layer.borderWidth = 0.5 
    return this 
}() 


let captionAndProfileImageContainerView : UIView = { 
    let this = UIView() 
    //this.backgroundColor = UIColor(red: (69/255.0), green: (209/255.0), blue: (153/255.0), alpha: 0.0) 
    this.backgroundColor = UIColor.clearColor() 
    return this 
}() 

let profilePicImageView : UIImageView = { 
    let imageView = UIImageView() 
    imageView.frame = CGRectMake(0, 0, 53, 53) 
    imageView.backgroundColor = UIColor.clearColor() 
    imageView.image = UIImage(named: "pizza") 
    imageView.contentMode = UIViewContentMode.ScaleToFill 
    return imageView 
}() 

let captionTextView: UITextView = { 
    let textField = UITextView(frame: CGRectMake(0,0, 150, 100)) 
    textField.textColor = UIColor.whiteColor() 
    textField.editable = false 
    textField.text = "dwwdwwwwdwddwd" 
    textField.backgroundColor = UIColor.clearColor() 
    textField.font = UIFont.systemFontOfSize(12.0) 
    return textField 
}() 

let dividerLineView: UIView = { 
    let view = UIView() 
    view.backgroundColor = UIColor(white: 0.5, alpha: 0.5) 
    return view 
}() 

let commentAndLikesContainerView : UIView = { 
    let view = UIView() 
    //view.backgroundColor = UIColor(red: (69/255.0), green: (209/255.0), blue: (153/255.0), alpha: 0.0) 
    view.backgroundColor = UIColor.clearColor() 
    return view 
}() 

let commentLabel : UILabel = { 
    let label = UILabel() 
    label.text = "23" 
    return label 
}() 

let likesLabel : UILabel = { 
    let label = UILabel() 
    label.text = "25" 
    return label 
}() 

let voteUpButton : UIButton = { 
    let button = UIButton(frame: CGRectMake(0,0,25,25)) 
    button.setImage((scaleImage((UIImage(named: "upvote"))!, toSize: CGSizeMake(25, 25))), inFrame: CGRectMake(0,0,25,25), forState: .Normal) 
    button.imageView?.contentMode = UIViewContentMode.Center 
    button.imageView?.clipsToBounds = true 
    button.imageEdgeInsets = UIEdgeInsetsMake(10, 10, 10, 10) 
    return button 
}() 

let voteDownButton : UIButton = { 
    let button = UIButton(frame: CGRectMake(0,0,25,25)) 
    button.setImage((scaleImage((UIImage(named: "upvote"))!, toSize: CGSizeMake(25, 25))), inFrame: CGRectMake(0,0,25,25), forState: .Normal) 
    button.imageView?.transform = CGAffineTransformMakeRotation((180.0 * CGFloat(M_PI))/180.0) 
    button.imageView?.contentMode = UIViewContentMode.Center 
    button.imageEdgeInsets = UIEdgeInsetsMake(6, 10, 10, 10) 
    button.imageView?.clipsToBounds = true 
    return button 
}() 


let commentButton : UIButton = { 
    let button = UIButton(frame: CGRectMake(0,0,25,25)) 
    button.setImage((scaleImage((UIImage(named: "comment_feed_icon"))!, toSize: CGSizeMake(25, 25))), inFrame: CGRectMake(0,0,25,25), forState: .Normal) 
    button.imageView?.contentMode = UIViewContentMode.ScaleAspectFit 
    button.imageEdgeInsets = UIEdgeInsetsMake(10, 10, 10, 10) 
    button.imageView?.clipsToBounds = true 
    return button 
}() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.view.backgroundColor = UIColor.clearColor() 
    setupViews() 
} 

func setupViews() { 
    self.captionAndProfileImageContainerView.addSubview(profilePicImageView) 
    self.captionAndProfileImageContainerView.addSubview(captionTextView) 

    self.commentAndLikesContainerView.addSubview(voteUpButton) 
    self.commentAndLikesContainerView.addSubview(voteDownButton) 
    self.commentAndLikesContainerView.addSubview(commentButton) 
    self.commentAndLikesContainerView.addSubview(commentLabel) 
    self.commentAndLikesContainerView.addSubview(likesLabel) 

    self.containerView.addSubview(captionAndProfileImageContainerView) 
    self.containerView.addSubview(dividerLineView) 
    self.containerView.addSubview(commentAndLikesContainerView) 




    self.view.addSubview(containerView) 
    self.view.bringSubviewToFront(containerView) 
    self.view.addSubview(mainImageView) 
    self.containerView.bringSubviewToFront(captionAndProfileImageContainerView) 
    self.containerView.bringSubviewToFront(dividerLineView) 
    self.containerView.bringSubviewToFront(commentAndLikesContainerView) 


    profilePicImageView.translatesAutoresizingMaskIntoConstraints = false 
    captionTextView.translatesAutoresizingMaskIntoConstraints = false 
    voteDownButton.translatesAutoresizingMaskIntoConstraints = false 
    containerView.translatesAutoresizingMaskIntoConstraints = false 
    voteUpButton.translatesAutoresizingMaskIntoConstraints = false 
    commentLabel.translatesAutoresizingMaskIntoConstraints = false 
    commentButton.translatesAutoresizingMaskIntoConstraints = false 
    commentAndLikesContainerView.translatesAutoresizingMaskIntoConstraints = false 
    captionAndProfileImageContainerView.translatesAutoresizingMaskIntoConstraints = false 
    likesLabel.translatesAutoresizingMaskIntoConstraints = false 
    dividerLineView.translatesAutoresizingMaskIntoConstraints = false 
    mainImageView.translatesAutoresizingMaskIntoConstraints = false 


    //main imageview constraints 
    self.view.addConstraint(NSLayoutConstraint(item: mainImageView, attribute: .Top, relatedBy: .Equal, toItem: self.view, attribute: .Top, multiplier: 1, constant: 35)) 
    self.view.addConstraint(NSLayoutConstraint(item: mainImageView, attribute: .Leading, relatedBy: .Equal, toItem: self.view, attribute: .Leading, multiplier: 1, constant: 0)) 
    self.view.addConstraint(NSLayoutConstraint(item: mainImageView, attribute: .Trailing, relatedBy: .Equal, toItem: self.view, attribute: .Trailing, multiplier: 1, constant: 0)) 
    self.view.addConstraint(NSLayoutConstraint(item: mainImageView, attribute: .CenterX, relatedBy: .Equal, toItem: self.view, attribute: .CenterX, multiplier: 1, constant: 0)) 
    self.view.addConstraint(NSLayoutConstraint(item: mainImageView, attribute: .Bottom, relatedBy: .Equal, toItem: self.view, attribute: .Bottom, multiplier: 1, constant: 0)) 
    self.view.sendSubviewToBack(mainImageView) 


    //containerview constraints 

    self.view.addConstraint(NSLayoutConstraint(item: containerView, attribute: .Bottom, relatedBy: .Equal, toItem: self.view, attribute: .Bottom, multiplier: 1, constant: -10)) 
    self.view.addConstraint(NSLayoutConstraint(item: containerView, attribute: .Leading, relatedBy: .Equal, toItem: self.view, attribute: .Leading, multiplier: 1, constant: 10)) 
    self.view.addConstraint(NSLayoutConstraint(item: containerView, attribute: .Trailing, relatedBy: .Equal, toItem: self.view, attribute: .Trailing, multiplier: 1, constant: -10)) 
    self.view.addConstraint(NSLayoutConstraint(item: containerView, attribute: .Top, relatedBy: .Equal, toItem: self.view, attribute: .Bottom, multiplier: 1, constant: -160)) 

    //caption and profilepic constraints 

    self.view.addConstraint(NSLayoutConstraint(item: captionAndProfileImageContainerView, attribute: .Top, relatedBy: .Equal, toItem: containerView, attribute: .Top, multiplier: 1, constant: 0)) 
    self.view.addConstraint(NSLayoutConstraint(item: captionAndProfileImageContainerView, attribute: .Leading, relatedBy: .Equal, toItem: containerView, attribute: .Leading, multiplier: 1, constant: 0)) 
    self.view.addConstraint(NSLayoutConstraint(item: captionAndProfileImageContainerView, attribute: .Trailing, relatedBy: .Equal, toItem: containerView, attribute: .Trailing, multiplier: 1, constant: 0)) 
    self.view.addConstraint(NSLayoutConstraint(item: captionAndProfileImageContainerView, attribute: .Bottom, relatedBy: .Equal, toItem: containerView, attribute: .Bottom, multiplier: 1, constant: -50)) 

    self.view.addConstraintsWithFormat("H:|-8-[v0(50)]", views: profilePicImageView) 
    self.view.addConstraintsWithFormat("V:|-35-[v0(50)]", views: profilePicImageView) 
    profilePicImageView.layer.cornerRadius = 25 
    profilePicImageView.layer.masksToBounds = true 



    self.view.addConstraint(NSLayoutConstraint(item: captionTextView, attribute: .Top, relatedBy: .Equal, toItem: captionAndProfileImageContainerView, attribute: .Top, multiplier: 1, constant: 0)) 
    self.view.addConstraint(NSLayoutConstraint(item: captionTextView, attribute: .Leading, relatedBy: .Equal, toItem: profilePicImageView, attribute: .Trailing, multiplier: 1, constant: 10)) 
    self.view.addConstraint(NSLayoutConstraint(item: captionTextView, attribute: .Trailing, relatedBy: .Equal, toItem: captionAndProfileImageContainerView, attribute: .Trailing, multiplier: 1, constant: 0)) 
    self.view.addConstraint(NSLayoutConstraint(item: captionTextView, attribute: .Bottom, relatedBy: .Equal, toItem: captionAndProfileImageContainerView, attribute: .Bottom, multiplier: 1, constant: 0)) 

    //likes and comments and divider 


    self.view.addConstraint(NSLayoutConstraint(item: commentAndLikesContainerView, attribute: .Top, relatedBy: .Equal, toItem: captionAndProfileImageContainerView, attribute: .Bottom, multiplier: 1, constant: 0)) 
    self.view.addConstraint(NSLayoutConstraint(item: commentAndLikesContainerView, attribute: .Leading, relatedBy: .Equal, toItem: containerView, attribute: .Leading, multiplier: 1, constant: 0)) 
    self.view.addConstraint(NSLayoutConstraint(item: commentAndLikesContainerView, attribute: .Trailing, relatedBy: .Equal, toItem: containerView, attribute: .Trailing, multiplier: 1, constant: 0)) 
    self.view.addConstraint(NSLayoutConstraint(item: commentAndLikesContainerView, attribute: .Bottom, relatedBy: .Equal, toItem: containerView, attribute: .Bottom, multiplier: 1, constant: 0)) 


    self.view.addConstraint(NSLayoutConstraint(item: voteUpButton, attribute: .Top, relatedBy: .Equal, toItem: commentAndLikesContainerView, attribute: .Top, multiplier: 1, constant: 0)) 
    self.view.addConstraint(NSLayoutConstraint(item: voteUpButton, attribute: .Leading, relatedBy: .Equal, toItem: commentAndLikesContainerView, attribute: .Leading, multiplier: 1, constant: 10)) 


    self.view.addConstraint(NSLayoutConstraint(item: likesLabel, attribute: .Top, relatedBy: .Equal, toItem: commentAndLikesContainerView, attribute: .Top, multiplier: 1, constant: 10)) 
    self.view.addConstraint(NSLayoutConstraint(item: likesLabel, attribute: .Leading, relatedBy: .Equal, toItem: voteUpButton, attribute: .Trailing, multiplier: 1, constant: 10)) 

    self.view.addConstraint(NSLayoutConstraint(item: voteDownButton, attribute: .Top, relatedBy: .Equal, toItem: commentAndLikesContainerView, attribute: .Top, multiplier: 1, constant: 0)) 
    self.view.addConstraint(NSLayoutConstraint(item: voteDownButton, attribute: .Leading, relatedBy: .Equal, toItem: likesLabel, attribute: .Trailing, multiplier: 1, constant: 10)) 

    self.view.addConstraint(NSLayoutConstraint(item: commentButton, attribute: .Top, relatedBy: .Equal, toItem: commentAndLikesContainerView, attribute: .Top, multiplier: 1, constant: 0)) 
    self.view.addConstraint(NSLayoutConstraint(item: commentButton, attribute: .Leading, relatedBy: .Equal, toItem: voteDownButton, attribute: .Trailing, multiplier: 1, constant: 30)) 

    self.view.addConstraint(NSLayoutConstraint(item: commentLabel, attribute: .Top, relatedBy: .Equal, toItem: commentAndLikesContainerView, attribute: .Top, multiplier: 1, constant: 10)) 
    self.view.addConstraint(NSLayoutConstraint(item: commentLabel, attribute: .Leading, relatedBy: .Equal, toItem: commentButton, attribute: .Trailing, multiplier: 1, constant: 10)) 



    if !UIAccessibilityIsReduceTransparencyEnabled() { 
     self.containerView.backgroundColor = UIColor.clearColor() 

     let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Dark) 
     let blurEffectView = UIVisualEffectView(effect: blurEffect) 
     //always fill the view 
     blurEffectView.frame = containerView.bounds 
     blurEffectView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] 

     self.containerView.insertSubview(blurEffectView, atIndex: 1) //if you have more UIViews, use an insertSubview API to place it where needed 


    } 
    else { 
     self.view.backgroundColor = UIColor(red: (69/255.0), green: (209/255.0), blue: (153/255.0), alpha: 0.5) 
    } 



    containerView.clipsToBounds = true 

} 


} 
+0

は、対象を治療しない私のために働いて、このコードを試してみてください。あなたはプログラムで制約を追加するためにSnapKitを使うことができます - それはもっと簡単です; D –

答えて

0

私はUIImageViewとし、容器との単純なプロジェクトを作りました。コンテナにぼかしを適用すると、下の写真がぼやけました。コンテナの背景はストーリーボードで透明に設定されています。

class ViewController: UIViewController { 
override func viewDidLoad() { 
    super.viewDidLoad() 

    let containerView : UIView = { 
     let this = UIView(frame: CGRectMake(100,200, 200,200)) 
     this.backgroundColor = UIColor.clearColor() 
     this.layer.cornerRadius = 5 
     this.layer.borderColor = UIColor(red: (69/255.0), green: (209/255.0), blue: (153/255.0), alpha: 1.0).CGColor 
     this.layer.borderWidth = 0.5 
     return this 
    }() 

    let visualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .Light)) 

    visualEffectView.frame = containerView.bounds 

    self.view.addSubview(containerView) 
    containerView.insertSubview(visualEffectView, atIndex: 0) 
    let secondImg = UIImageView(image: UIImage(named: "swift_tut.png")) 

    secondImg.frame = CGRectMake(150,250, 200,200) 

    self.view.addSubview(secondImg) 
    self.view.bringSubviewToFront(containerView) 





    // Do any additional setup after loading the view, typically from a nib. 
} 

enter image description here

+0

唯一のことは、コンテナビューはイメージビューではなく、確かに違いがあるかどうかわからないことです – Alk

+0

私の編集を確認してください。これをcontainerViewに追加すると、全体がグレーになります。私は何とか同じ位置に別のビューを作成し、その代わりにそれを追加する必要があると思います。 – Alk

+0

私は問題の写真を投稿しました私のデバイス上に持っている – Alk

0

if !UIAccessibilityIsReduceTransparencyEnabled() { 
     self.view.backgroundColor = UIColor.clearColor() 

     let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Dark) 
     let blurEffectView = UIVisualEffectView(effect: blurEffect) 
     //always fill the view 
     blurEffectView.frame = self.view.bounds 
     blurEffectView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] 

     self.view.insertSubview(blurEffectView, atIndex: 1) //if you have more UIViews, use an insertSubview API to place it where needed 


    } 
    else { 
     self.view.backgroundColor = UIColor.blackColor() 
    } 
+0

みんな、私の編集を確認してください、私はいくつかの詳細を提供しました – Alk

関連する問題