Белая прозрачная панель инструментов, как сделать так, чтобы строка состояния совпадала

Использование xcode6 и раскадровка

У меня есть панель инструментов, которая находится в верхней части моего представления. под панелью инструментов находится карта. Вид карты расширяется под строкой состояния, чего я и хочу. В основном я хочу, чтобы панель инструментов и строка состояния были немного прозрачными ~ 20%, чтобы вы могли видеть карту внизу.

Я настроил цвет фона панели инструментов на белый, непрозрачный на 80%. Однако я понятия не имею, как заставить строку состояния быть точно такой же.

Из всего, что я знаю, строка состояния на 100% прозрачна, что означает, что она будет отображать любой вид, который находится под ней. Я попытался добавить вид высотой 20 пунктов над моей панелью инструментов, и я установил для него белый цвет, прозрачность 80%. Это почти достигает того же эффекта, к которому я стремлюсь, но между панелью инструментов и строкой состояния есть черная линия,

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

Я даже на правильном пути? Как сделать так, чтобы цвет и прозрачность панели инструментов соответствовали цвету и прозрачности строки состояния и избежать линии?

ИЗМЕНИТЬ:

clipsToBounds отлично справился с удалением линии.

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

Я добавил кнопку программно:

-(void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)button forPopoverController:(UIPopoverController *) pc {
    button.image = [UIImage imageNamed:@"bars"];

    NSMutableArray *items = [self.toolbar.items mutableCopy];
    if (!items) {
        items = [NSMutableArray arrayWithObject:button];
    } else {
        [items insertObject:button atIndex:0];
    }

    [self.toolbar setItems:items];
}

И после того, как я добавлю эту кнопку, фон моей панели инструментов снова станет белым:

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

EDIT 2 Итак, я только что обнаружил перечисление UIBarPositionTopAttached и могу установить свое представление в качестве делегата панели инструментов. Я сделал это:

  • (UIBarPosition) positionForBar: (id) bar { return UIBarPositionTopAttached; }

И проверил, что он был вызван. Я надеялся, что это сообщит iOS, что моя панель инструментов прикреплена к строке состояния и что цвет моей панели инструментов и все остальное переместится в строку состояния. Это тоже не так?

Похоже, что присоединение панели инструментов к строке состояния таким образом, чтобы строка состояния занимала фон панели инструментов, не должна быть такой сложной, т. Е. Мне действительно нужно создать дополнительный вид на 20 пунктов для достижения этого? И даже если так кажется, что я делаю это неправильно, когда я добавляю кнопку, прозрачность моей панели инструментов снова становится непрозрачной.


person lostintranslation    schedule 01.10.2014    source источник


Ответы (2)


UIToolbar имеет тонкую тень вверху. Если вы установите свойство отсечения границ, оно скроет линию.

toolbar.clipsToBounds = YES;
person Tim Edwards    schedule 01.10.2014
comment
можно установить это в IB/раскадровке? - person lostintranslation; 02.10.2014
comment
Установите его в определяемых пользователем атрибутах среды выполнения. Сработало как шарм, спасибо! - person lostintranslation; 02.10.2014
comment
Не то, чтобы я мог разобрать, есть флажок для подзаголовков клипа, но это не исправило его. Вы можете получить доступ к панели инструментов из навигационного контроллера, это зависит от того, как вы ее реализовали. - person Tim Edwards; 02.10.2014

Хотя привязка к границам отлично работает, я думаю, что правильный ответ на этот вопрос — использовать barPosition на панели инструментов.

Есть несколько способов сделать это:

Установите свое представление в качестве делегата на панель инструментов и реализуйте этот метод делегата:

- (UIBarPosition)positionForBar:(id <UIBarPositioning>)bar {
    return UIBarPositionTopAttached;
}

Или в раскадровке установите определяемый пользователем атрибут времени выполнения на панели UIToolbar:

barPosition Number 3

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

person lostintranslation    schedule 02.10.2014