Размещение представления перед панелью вкладок - PullRequest
3 голосов
/ 10 августа 2011

Я пытаюсь придумать способ, которым я могу разместить представление поверх панели вкладок.Это бы по существу покрыло это.Я не уверен, как это сделать.Если панель вкладок сама является подпредставлением другого контроллера, то это может показаться простым, но из того, что я понимаю, вы не сможете сделать это без «злоупотребления» методологией контроллера представления (например, addSubview: tabbar.view или чего-то подобного).

По сути, на экране iphone есть ограниченное пространство, и панель вкладок - это навигация, но иногда я хочу использовать это пространство для краткого отображения информации.Если панель вкладок - мой корневой контроллер, я думаю, что это невозможно.

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

Буду признателен за любые другие предложения, указывающие мне правильное направление.

Ответы [ 3 ]

5 голосов
/ 10 августа 2011

Вы можете использовать корневое окно. Если вы просто получаете главное окно из [[UIApplication sharedApplication] keyWindow], вы можете добавить виды непосредственно к этому. Это позволит вам снова всплыть на экране. У вас все еще будет немного снэфу, чтобы справиться с вращением, но если вы не делаете автоматическое вращение, тогда это так же просто, как и не беспокоиться об этом.

Другой вариант - создать новое UIWindow и поместить в него все, где вы захотите. Вот как на самом деле работают UIAlertView. Таким образом, это никак не повлияет на вашу иерархию представлений. У этого метода есть одна проблема: только одно окно отправляет события, в том числе касания, их подпредставлениям. Таким образом, использование этого в основном позволяет пользователю все еще касаться панели внизу. Первый вариант может быть лучше, но я просто добавлю это на тот случай, если кто-нибудь найдет его полезным.

1 голос
/ 10 августа 2011

Я бы предложил следующее.

UIView
   |
    --UIView (this will hold the tab bar controller)
        |
         -- Tabbar controller
   |
    --Full Screen View

Так что в основном панель вкладок заключена в UIView.Это добавлено в основной UIView.Если вы хотите отобразить полноэкранный режим, вы можете добавить это представление в основное представление пользовательского интерфейса.Таким образом, не нужно было бы скрывать / показывать панель вкладок.

0 голосов
/ 20 января 2018

Примерно так:

if let indeedTabBarController = self.tabBarController {

    let buttonHeight: CGFloat = 49 // height of tab bar
    let buttonWidth = UIScreen.main.bounds.width / 3 // in case if you have 3 tabs
    let frame = CGRect(x: 0, y: UIScreen.main.bounds.height - buttonHeight, width: buttonWidth, height: buttonHeight)
    let button = UIButton(frame: frame)
    button.addTarget(self, action: #selector(self.someAction), for: .touchUpInside)

    indeedTabBarController.view.addSubview(button)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...