2016-11-04 3 views
0

Я использую Swift 3 и xcode 8 для создания слайд-меню для приложения iOS (я не хочу использовать какую-либо библиотеку с открытым исходным кодом), поэтому я создал его, я столкнулись с двумя проблемами: 1. Если на центральном плане есть панель навигации, то под навигационной панелью появляется вид сбоку, я хочу, чтобы он начинался с границ экрана.Меню выхода из меню iOS, отображающее строку состояния в iOS

2. В представлении меню слайдов также отображается несущая, время сверху меню, я хочу, чтобы поведение было похоже на приложение google plus iOS, где меню загружается поверх домашнего вида.

Ниже приведен код, который я использую, чтобы открыть меню слайдов. Я не уверен, что эти проблемы возникли из-за того, что я добавил меню в виде подзаголовка, если есть лучший способ сделать это, любезно предложите , Открытие вида меню из контроллера дома вида

let menuVC : MenuViewController = self.storyboard!.instantiateViewController(withIdentifier: "MenuViewController") as! MenuViewController 
     menuVC.delegate = self 
     self.view.addSubview(menuVC.view) 
     self.addChildViewController(menuVC) 
     menuVC.didMove(toParentViewController: self) 
     menuVC.view.layoutIfNeeded() 

     menuVC.view.frame=CGRect(x: 0 - UIScreen.main.bounds.size.width, y: 0, width: self.view.frame.width, height: self.view.frame.height); 


     UIView.animate(withDuration: 0.3, animations: {() -> Void in 
      menuVC.view.frame = self.view.frame 
      sender.isEnabled = true 
      }, completion:nil) 
+0

Почему вы ненавидите о ручные исходные библиотеки? Они делают мир прекрасным. –

+0

Пожалуйста, добавьте какую библиотеку вы используете? – Vinodh

+0

@Vinodh Как уже упоминалось в вопросе, я не использую библиотеку. Я пытался ее реализовать, но столкнулся с вышеупомянутой проблемой. –

ответ

1

Если вы действительно хотите, чтобы посмотреть, чтобы быть в верхней части строки состояния и NavController вы можете добавить его в окно:

UIApplication.shared.keyWindow?.addSubview(menuVC.view) 

Примечания что точка зрения больше не подвид из ViewController так что вам также необходимо вручную отклонить его в Deinit иначе он будет оставаться на экране, даже если контроллер вид уходит:

menuVC.view.removeFromSuperview() 
+0

Как было предложено @Girish M и вами, добавление меню vc в приложении keywindow решает проблему 1, но все еще видит строку состояния в меню. Спасибо за решение. –

+0

просто выключите панель состояния: https://www.hackingwithswift.com/example-code/uikit/how-to-hide-the-status-bar –

+0

Я попытался скрыть строку состояния внутри меню vc, override var prefersStatusBarHidden: Bool { return true }, я также вызываю setNeedsStatusBarAppearanceUpdate(), внутри viewWillAppear, показывается строка состояния, предпочтение раскадровки для этого VC также имеет значение строки состояния как «None». –

0
  1. Вы можете добавить меню слева в виде окна под надзором над окном и сместить его с помощью анимации.

  2. Скрыть/показать строку состояния, если вы не хотите, чтобы показать носитель, время в верхней части меню Вид

+0

Я попытался скрыть строку состояния со следующим кодом внутри контроллера меню, все же отображается строка состояния, переопределить var prefersStatusBarHidden: Bool { return true } –

+0

В plist добавьте следующую пару значений ключа «Просмотр контроллера- основанный на статусной строке "-> NO – miOS

+0

Я пробовал эту настройку и только в контроллерах представления, чтобы скрывать строку состояния, я возвращаю нет, но я вижу строку состояния.Панель навигации для основного представления была создана с помощью раскадровки (по умолчанию nav), поэтому я пытаюсь создать настраиваемую панель навигации, чтобы узнать, исправляет ли она проблему. –

-1

класс ViewController: UIViewController {

@IBOutlet weak var leading: NSLayoutConstraint! 

@IBOutlet weak var sideview: UIView! 

var showmenu = false 

override func viewDidLoad() { 
    super.viewDidLoad() 


     leading.constant = -160 

// sideview.layer.shadowOpacity = 5 // sideview.layer.shadowRadius = 5

} 


@IBAction func btnmenu(_ sender: UIBarButtonItem) { 



    if (showmenu) 
    { 

     leading.constant = -160 

    } 
    else 
    { 

     leading.constant = 0 



     UIView.animate(withDuration: 0.5, animations:{self.view.layoutIfNeeded() }) 




    } 
    showmenu = !showmenu 





} 


@IBAction func btntblview(_ sender: UIButton) { 

    let hk = storyboard?.instantiateViewController(withIdentifier: "TableViewController")as! TableViewController 

    self.navigationController?.pushViewController(hk, animated: true) 

} 
Смежные вопросы