2015-08-30 11 views
8

Mam swoje widoki zaprojektowane w scenorysie. Po wysunięciu menu widok z tyłu nie zmienia się automatycznie na szerokość urządzenia.zmiana szerokości widoku z tyłu w SWRevealController

Jak ustawić szerokość widoku tak, aby pasowała do szerokości zdefiniowanej przez self.revealViewController(). RearViewRevealWidth?

dzięki

+0

Czy możesz opublikować kilka zrzutów ekranu tego, czego dokładnie szukasz? –

Odpowiedz

4

na pasku menu pasty widok kontrolera poniżej linii dotyczące metody viewDidLoad kod

Objective C 

    self.revealViewController.rearViewRevealWidth = self.view.frame.size.width-100; 

Swift 

self.revealViewController().rearViewRevealWidth = self.view.frame.width-100 

działa poprawnie na wszystkich ekranie.

6
class SideMenuViewController: UITableViewController { 

    override func viewDidLoad() { 
    super.viewDidLoad() 
    self.revealViewController().rearViewRevealWidth = self.view.frame.width - 64 
    } 

} 

To działa dla mnie!

2

To, co myślę, że Ant szukał, jest tym samym, co próbowałem zrobić, gdy natknąłem się na to pytanie: aby ustawić tylny kontroler na rozmiar tylnej szerokości (w moim przypadku chciałem, aby tak się stało, ponieważ Miałem elementy UI, które musiały być wycentrowane w widoku z tyłu). Ten pracował dla mnie:

override func viewDidAppear(_ animated: Bool) { 
     self.view.frame.size.width = self.revealViewController().rearViewRevealWidth 
    } 

Poszło z tego:

enter image description here

do tego:

enter image description here

0

pisałem di Swift 3 oświadczenia w viewDidLoad z moim MasterController, w którym programowo konfiguruję SWRevealViewController (FrontController i RearController) i przypisuję SWRevealVie wController(), aby UIApplication.shared.delegate! .window? .rootViewController, ale byłoby to działa również w viewDidLoad swojego początkowego UIViewController

let revealController = SWRevealViewController() 

// settings to show full screen menu 

// set width menu to screen size 
revealController.rearViewRevealWidth = self.view.frame.width 
// hide totally shadow 
revealController.frontViewShadowOffset = CGSize.zero 
revealController.frontViewShadowOpacity = 0 

// optional settings 

// no overdraw when dragging 
revealController.rearViewRevealOverdraw = 0 

// no displacement when animating or dragging the content 
revealController.rearViewRevealDisplacement = 0 
0

Dodaj ten kod w menu sterownika

override func viewWillLayoutSubviews() { 
    super.viewWillLayoutSubviews() 
    self.view.frame.size.width = self.revealViewController().rearViewRevealWidth 
} 

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 
    self.view.frame.size.width = self.revealViewController().rearViewRevealWidth 
} 

To może pracować z dowolnym menu. Mam nadzieję, że to pomoże!

0

Po prostu ustaw właściwość rearViewRevealOverdraw na 0 zaraz po ustawieniu właściwości width width. na przykład:

self.revealViewController().rearViewRevealWidth = 300 //put the width you need 
self.revealViewController().rearViewRevealOverdraw = 0 
Powiązane problemy