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 } 
  • Установите rootViewController из UINavigationController с помощью метода, отличного от initWithRootViewController
  • Как «докровать» UIToolbar в нижней части экрана в UITableView?
  • Укажите высоту UIToolbar в раскадровке
  • Панель UINavigationController охватывает содержимое своего uiviewcontroller
  • Пользовательский UIToolbar с UINavigationController для профессионалов
  • iOS - с помощью UISearchDisplayController с UISearchBar, который является UIBarButtonItem в UIToolbar
  • Неверное вертикальное положение для UIBarButtonItems в UIToolbar для iOS 7
  • InputAccessoryView состыковался внизу
  • Недопустимый цвет UIToolbar в iOS7
  • iOS11 UIToolBar Contentview
  • Могу ли я определить, включен ли режим размытия iPhone?
  • Изменить размер UIToolbar будет отклонен в App Store?
  • Interesting Posts

    Анимация CAShapeLayer

    пользовательский текст при записи красной строки состояния

    Использование NSURLConnection для SSL с самоподписанным сертификатом

    перерисовка пользовательского интерфейса при изменении ориентации устройства

    добавление UISearchBar в UICollectionviewController, встроенное в NavigationController IOS6

    Как получить текущее изображение кнопки с помощью imageForState?

    строка поиска исчезла в ios UIsearchcontroller

    Каскады делегатов и захват обратных вызовов делегатов в Objective-C

    Как сохранить представление UIImage и текст внутри него на диск

    iPhone UIImage, загруженный из данных ядра, поворачивается против часовой стрелки на 90 градусов. Как исправить?

    Instagram-подобная панель навигации (iOS 7)

    Ошибка проверки подлинности – XMPPFramework – не авторизованный

    Преобразование многобайтового байтового массива unicode в NSString с использованием частичного буфера

    Удалить фон градиента из UIWebView?

    Force UIImagePickerController для обрезки квадратного изображения

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