iOS 7 UIToolBar Переключение со строкой состояния

Я обновил свой проект с iOS 6 до iOS 7, но, похоже, немного проблем. Строка состояния и панель инструментов являются переопределяющими и очень близкими друг к другу. Панель инструментов была добавлена ​​ранее, вручную перетащив ее в раскадровку. Вот как это проявляется:

панель инструментов

Я видел несколько вопросов, которые предлагают использовать позицию positionForBar: "и" – (UIBarPosition) positionForBar: (id) ", но я точно не знаю, как их использовать, небольшое объяснение и простой способ сделать это могут Помогите. Благодаря!

UPDATE: Ниже приведен код, который также нуждается в исправлении. Он работал отлично раньше, но поскольку элемент управления detailview (WebViewController) теперь встроен в контроллер навигации, приведенный ниже код вызывает исключение. Похоже, мне нужно изменить первую строку в этом методе.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { WebViewController *wvc = [self.navigationController.parentViewController childViewControllers][1]; RSSItem *entry = [[channel items] objectAtIndex:[indexPath row]]; wvc.title = entry.title; wvc.urlString = entry.link; } 

6 Solutions collect form web for “iOS 7 UIToolBar Переключение со строкой состояния”

Если ваша настройка представляет собой разделенное представление, такое как настройка с двумя видами контейнера, вы должны это сделать. Когда вы настраиваете представления контейнера, перетащите вверх, пока не увидите пунктирную синюю линию, указывающую, что верхняя часть находится в нижней части строки состояния. Сделайте это с обоими видами контейнера. Добавьте панель инструментов к встроенному контроллеру (а не к виду контейнера), прикрепленному к верхней части представления этого контроллера. С левым представлением, встроенным в контроллер навигации, мой экран выглядел так:

введите описание изображения здесь

 _toolBar.delegate = self; - (UIBarPosition)positionForBar:(id <UIBarPositioning>)bar { CGRect frame = _toolBar.frame; frame.origin = CGPointMake(0, [UIApplication sharedApplication].statusBarFrame.size.height); _toolBar.frame = frame; return UIBarPositionTopAttached; } 

портретная панель

ландшафтный бар

Верхнее ограничение вашего представления больше не должно быть верхним пространством для просмотра, а скорее топ-макетом верхнего плана.

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

Помните, что вы не должны просто перемещать вещи в IB по двум причинам:

  1. Не совместим с iOS 6
  2. Не будет увеличивать фоновый эффект верхнего бара в строке состояния

Чего не делать...

Итак, если вы хотите совместимость с iOS6 и iOS7, вы можете добавить условное выражение для объектов, которые требуют настройки в ViewDidLoad . Предостережение – это последний случайный сценарий – всегда пытайтесь исправить его с помощью автозапуска / IB:

 #import <Availability.h> #ifdef __IPHONE_7_0 CGRect barFrame = topBar.frame; barFrame.origin = CGPointMake(0, [UIApplication sharedApplication].statusBarFrame.size.height); [topBar setFrame:barFrame]; // move other stuff around too #endif 

И установите делегат вашего бара так же, как Luniz выше, переопределите positionForBar .

 topBar.delegate = self; - (UIBarPosition)positionForBar:(id <UIBarPositioning>)bar { return UIBarPositionTopAttached; } 

Я пытался сделать почти то же самое, но мне не понравилась белая строка состояния принятого ответа. Мне удалось сделать панель инструментов помещенной под строку состояния так, чтобы она имела согласованный цвет в панели навигации, которая находится рядом с ней в режиме «Мастер».

Мое решение состояло в том, чтобы сделать панель инструментов на 64 точки высотой и установить верхнее пространство для супервизора в 0.

При этом вам нужно убедиться, что вы не создаете ограничение для руководства по макету Top Space. Я смог сделать это в Interface Builder, установив Frame равным 0,0 с высотой 64. Затем я использовал диалог Pin в меню плавающего инструмента. Я использовал ноль с верхним лучом I, чтобы создать ограничение.

Нижние края совпадают в Мастере и деталях, и раскраска согласована. Элементы управления на панели инструментов оказались непереполненными.

Swift 3

Подключите делегат панели и совместите с UIToolbarDelegate. Затем добавьте этот метод делегата:

 func position(for bar: UIBarPositioning) -> UIBarPosition { return UIBarPosition.topAttached } 

потому что сейчас

 enum UIBarPosition : Int { case any case bottom case top case topAttached } 
  • Как сделать фон UIToolbar прозрачным?
  • Панель навигации iOS VS UIToolBar
  • перерисовать вид с экрана - содержит представление выбора и панель инструментов
  • Как добавить кнопки на панель инструментов в iPad popover?
  • Оттенок на UIToolBar при полупрозрачности - false
  • Добавление панели инструментов поверх uikeyboard
  • Как оживить UIBarButtonItem для перемещения по UIToolbar слева?
  • Создание кнопки со стрелкой влево (например, стиль «назад» UINavigationBar) на UIToolbar
  • InputAccessoryView состыковался внизу
  • Установить UIToolbarPosition для созданного UIToolbar
  • Можно установить фоновое изображение для UIBarButtonItem в панели навигации, но не нижнюю панель инструментов
  • Interesting Posts

    Проверьте, добавлен ли CALayer в качестве подуровня

    Можно ли добавить «украденный» слой UILabel к подуровню другого CALayer?

    Файл CoreData + MagicalRecord.h не найден

    Кнопка «Воспроизвести / Пауза дальше» / «Предыдущее» выделена серым цветом в центре управления

    iOS Firebase Crash Reporting Загрузка файлов Symbol

    Получить позицию UIView в отношении ее супервизора

    Доступ к IBOutlet в родительском представлении модального вида

    iOS – UISlider прыгает при первом касании

    Точность основного местоположения

    iOS – обнаруживает, запущено ли приложение из Xcode

    Как я могу вычислить количество строк UILabel с фиксированной шириной?

    Как ограничить только 1 десятичную запись в UITextField в Swift для iOS8?

    Преобразование обучаемой модели классификации изображений Keras в coreml и интеграцию в iOS11

    Box v2 API – флажок «Запомнить логин»

    Удалить внутренний кеш UIWebView

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.