Я не могу установить barTintColor в UINavigationBar для успешного удаления

В UINavigationBar есть странная вещь для iOS 7. Если вы попытаетесь установить это barTintColor собственность на [UIColor clearColor] или любой цвет с альфа = 0, он полностью игнорирует это значение. Например, если вы напишите:

[[navigationBar setBarTintColor:[UIColor clearColor]];

Это не уважает "чистую" часть вообще. Тот же результат с colorWithRed:green:blue:alpha,

Но самое интересное, если вы установите translucent собственность на NO, тогда он примет цвет, который вы указали, НО с альфа 1. Так что если я укажу colorWithRed:1 green:0 blue:0 alpha:0 он будет установлен в чисто красный цвет с альфа как 1.

Как мне этого добиться? Есть ли какое-нибудь возможное решение сделать его полностью невидимым barTintColorхотя требует хакерских методов?

3 ответа

Решение

Если вы хотите чистый контроллер навигации, попробуйте установить фоновое изображение контроллера навигации для использования чистого файла PNG (1x1 прозрачный, без цвета).

Это работает для меня

navigationBar.translucent = true
navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)

Мой ответ очень похож на ответ Брайана с предложением Дэвида, хотя это не то же самое. Я публикую это, чтобы сэкономить время для всех, кто пытается это сделать.

// Forcing transparent background.
navigationBar.translucent = YES;
navigationBar.backgroundImage = [[UIImage alloc] init];

Важно установить translucent в YES, В противном случае полоса будет черной. Я проверял это на iOS 7.1.1.

Другие вопросы по тегам