2017-03-28 6 views
-1

SWRevealViewControllerでSwift 3を使用してサイドバーメニューアプリを作成しています。SWRevealViewController:バックビュー(メニュー)が開いているときのフロントビューの色の変更

リアビュー(メニュー)が開いているときに、フロントビューの色を制御するにはどうすればよいですか? 灰色(無効/透明)を表示したいと思います。 これまで私が試したものはうまく動作せず、オンラインで直接解決策を見つけることができませんでした。 リアビューカラーはコントロールできますが、フロントビューはコントロールできません。

これまでのところ、私は背面ビューコントローラーのviewWillAppearで正面の色を変更しようとしました。

viewWillAppear MenuControllerには、次のようになります(_アニメーション:ブール値)viewWillAppear FUNC

オーバーライド{

print("MenuController - viewWillAppear") 
super.viewWillAppear(animated) 
self.revealViewController().frontViewController.view.isUserInteractionEnabled = false 
self.revealViewController().view.addGestureRecognizer(self.revealViewController().panGestureRecognizer()) 
self.revealViewController().frontViewController.view.backgroundColor = UIColor.blue 
self.revealViewController().rearViewController.view.backgroundColor = UIColor.gray 
} 

それは背面図の色を変化させるが、正面では動作しません。 そして、背景色を変更するだけでなく、無効にされた外観をグレー表示したい。

+0

のタップ機能でビューを削除するUIViewにタップジェスチャーを追加した場合は? (_アニメーション:ブール値)viewWillAppear FUNCオーバーライド:MenuControllerで – carlos21

答えて

0

試してみては

revealViewController.frontViewController.view.backgroundColor = UIColor.blue //Set colour to what ever you want 

だからそれがこの

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 
    revealViewController.frontViewController.view.backgroundColor = UIColor.blue 
} 

編集のようになりますあなたのrearVieControllerクラスであなたのviewWillAppearメソッドにこれを追加します。

私はこれを行うことを試みたオーケー

とそれは動作するようです

新しいUIViewを作成して追加するfrontViewControllerに渡し、ビューが消えたら削除します。

var view: UIView? 

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 
    //Create the view the same size as your frontViewController 
    view = UIView(frame: CGRect(x: CGFloat(0), y: CGFloat(0), width: CGFloat(revealViewController.view.frame.size.width), height: CGFloat(revealViewController.view.frame.size.height))) 
    //Set the colour of the view to whatever you like 
    view?.backgroundColor = UIColor.blue 
    //Add the new view to the frontViewcontroller 
    revealViewController.frontViewController.view.addSubview(view!) 
} 

override func viewWillDisappear(_ animated: Bool) { 
    super.viewWillDisappear(animated) 
    //Remove the view from the frontViewController 
    view?.removeFromSuperview() 
} 

編集:

あなたは、代わりに、あなたが何をしようとしなかった貼り付けることができviewWillDisappear

var view: UIView? 

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 
    //Create the view the same size as your frontViewController 
    view = UIView(frame: CGRect(x: CGFloat(0), y: CGFloat(0), width: CGFloat(revealViewController.view.frame.size.width), height: CGFloat(revealViewController.view.frame.size.height))) 
    //Set the colour of the view to whatever you like 
    view?.backgroundColor = UIColor.blue 
    //Add a tap gesture to the UIview 
    let tap = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:))) 
    view?.addGestureRecognizer(tap) 
    //Add the new view to the frontViewcontroller 
    revealViewController.frontViewController.view.addSubview(view!) 
} 

func handleTap(_ sender: UITapGestureRecognizer) { 
    //Remove the view from the frontViewController 
    view?.removeFromSuperview() 
} 

override func viewWillDisappear(_ animated: Bool) { 
    super.viewWillDisappear(animated) 
    //Moved the remove to the tap gesture function 
} 
+0

viewWillAppearは次のようになります。{ 印刷( "MenuController - viewWillAppear") super.viewWillAppear(アニメーション) self.revealViewController() 自己frontViewController.view.isUserInteractionEnabled =偽。 (self.revealViewController()。panGestureRecognizer())self.revealViewController()。frontViewController.view.backgroundColor = UIColor.blue self.revealViewController()。rearViewController.view.backgroundColor = UIColor.gray } – SRM

+0

あなたはすでに試したコードを投稿できますか? –

+0

あなたの提案は私の前進に役立ちました。 RearViewController viewWillAppearとviewWillDisappearでは、FrontViewControllerのサブビューを追加したり削除したりしていますが、小さな問題は1つあります。私はあなたがそれをタップするとすぐになくなるようにサブビューしたい、今は前面ビューのコントローラ画面が完全に表示されるまでそのままです。メニューが左にスライドする前に、タップまたはパンのジェスチャーを認識してサブビューを削除するにはどうすればよいですか。ご助力ありがとうございます。 – SRM

関連する問題