警告

2017-09-22 6 views
3

を「視覚効果ビュー自体に直接サブビューを追加しないでください」私は、以下の機能を持っていると私はiOSの11 SDKにリンクするとき、私はエラーを取得する:警告

Do not add subviews directly to the visual effect view itself, instead add them to the -contentView.

問題があることができ

effectView = UIView() 

let effectView = UIVisualEffectView(effect: UIBlurEffect(style: .dark))" 

を変更することによって解決その効果はそのようには存在しません。 UIViewの代わりにUIVisualEffectViewを引き続き使用するにはどうすればよいですか?私はその効果を保ちたい。

let imagePicker = UIImagePickerController() 
let messageFrame = UIView() 
var activityIndicator = UIActivityIndicatorView() 
var strLabel = UILabel()  
let effectView = UIVisualEffectView(effect: UIBlurEffect(style: .dark)) 

func activityIndicator(_ title: String) { 
    strLabel.removeFromSuperview() 
    activityIndicator.removeFromSuperview() 
    effectView.removeFromSuperview() 

    strLabel = UILabel(frame: CGRect(x: 50, y: 0, width: 160, height: 46)) 
    strLabel.text = title 
    strLabel.font = UIFont.systemFont(ofSize: 14, weight: UIFont.Weight.medium) 
    strLabel.textColor = UIColor(white: 0.9, alpha: 0.7) 

    effectView.frame = CGRect(x: (view.frame.midX - strLabel.frame.width/2), y: (view.frame.midY - strLabel.frame.height/2), width: 160, height: 46) 
    effectView.layer.cornerRadius = 15 
    effectView.layer.masksToBounds = true 

    activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .white) 
    activityIndicator.frame = CGRect(x: 0, y: 0, width: 46, height: 46) 
    activityIndicator.startAnimating() 

    effectView.addSubview(activityIndicator) 
    effectView.addSubview(strLabel) 
    view.addSubview(effectView) 
} 

答えて

6

だけでエラーが言うことに従うとUIVisualEffectViewcontentViewにあなたのサブビューを追加します。

effectView.contentView.addSubview(activityIndicator) 
effectView.contentView.addSubview(strLabel) 
0

Appleはそれを言います。

Depending on the desired effect, the effect may affect content layered behind the view or content added to the visual effect view’s contentView. Apply a visual effect view to an existing view and then apply a UIBlurEffect or UIVibrancyEffect object to apply a blur or vibrancy effect to the existing view. After you add the visual effect view to the view hierarchy, add any subviews to the contentView property of the visual effect view. Do not add subviews directly to the visual effect view itself.

は、視覚効果ビューのコンテンツビューにあなたのサブビューを追加

effectView.contentView.addSubview(activityIndicator) 
effectView.contentView.addSubview(strLabel) 
0
let messageFrame = UIView() 
var activityIndicator = UIActivityIndicatorView() 
var strLabel = UILabel() 
effectView = UIView() 

    func activityIndicator(_ title: String) { 

    strLabel.removeFromSuperview() 
    activityIndicator.removeFromSuperview() 
    effectView.removeFromSuperview() 

    strLabel = UILabel(frame: CGRect(x: 50, y: 0, width: 160, height: 46)) 
    strLabel.text = title 
    strLabel.font = UIFont.systemFont(ofSize: 14, weight: UIFontWeightMedium) 
    strLabel.textColor = UIColor(white: 0.9, alpha: 0.7) 

    effectView.frame = CGRect(x: view.frame.midX - strLabel.frame.width/2, y: view.frame.midY - strLabel.frame.height/2 , width: 160, height: 46) 
    effectView.layer.cornerRadius = 15 
    effectView.layer.masksToBounds = true 

    activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .white) 
    activityIndicator.frame = CGRect(x: 0, y: 0, width: 46, height: 46) 
    activityIndicator.startAnimating() 

    effectView.addSubview(activityIndicator) 
    effectView.addSubview(strLabel) 
    view.addSubview(effectView) 
} 

時に開始終了:

 activityIndicator("Your Text") 

self.effectView.removeFromSuperview()