IOS 7 TabBar Прозрачная проблема

У меня проблема, когда я устанавливаю полупрозрачный блок на TabBar, есть что-то, блокирующее некоторые из моих представлений.

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

Смотрите прилагаемые изображения:

С прозрачным (OFF - NO):

With Translucent (OFF - NO)

С прозрачным (ON или YES):

With Translucent (ON or YES)

Кто-нибудь знает, почему это выглядит так?

Спасибо

PS: Какая tabBar вам нравится? Черный или этот:

enter image description here

Ответ 1

Это происходит в iOS7, когда вы устанавливаете tabBar.translucent в NO. iOS пытается быть умным и сказать "эй, что панель не прозрачна, поэтому мы лучше подталкиваем все вверх". Исправьте его, установив свойство extendedLayoutIncludesOpaqueBars контроллера вида в навигационном контроллере, который находится внутри контроллера таблеток, на YES.

Пример (фактически не запущен):

UITabBarController *tabBarController = [[UITabBarController alloc] init];
tabBarController.tabBar.barStyle = UIBarStyleBlack;
tabBarController.tabBar.translucent = NO;

UIViewController *viewController = [[UIViewController alloc] init];
viewController.extendedLayoutIncludesOpaqueBars = YES; // <-- This is important!!!!!!

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController: viewController];

tabBarController.viewControllers = @[navigationController];

Источник: https://web.archive.org/web/20160405135605/https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/AppearanceCustomization.html

И BTW, мне нравится лучшая непрозрачная таба.

Edit

Как уже упоминал Энди, этот флаг не должен быть установлен в коде. Вы можете установить его в IB, если это то, что вы используете.

Ответ 2

Как уже упоминалось здесь, вы должны установить barTintColor на то, что вы хотите изменить цвет.

Эти настройки автоматически применяются, когда вы устанавливаете любой стиль для barStyle или любой пользовательский цвет для barTintColor. Если вы предпочитаете, вы можете сделать панель вкладок непрозрачной, не устанавливая прозрачное свойство NO. В этом случае панель рисует непрозрачный фон черным, если панель вкладок имеет стиль UIBarStyleBlack, белый, если панель вкладок имеет UIBarStyleDefault или панель вкладок barTintColor, если определено пользовательское значение.

Что-то, что я использовал для моего проекта

self.tabBarController.tabBar.barTintColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0];

self.tabBarController.tabBar.translucent = NO;

Ответ 3

У меня есть контроллер с TableView и полупрозрачный NavigationBar и полупрозрачный TabBar.
В этой ситуации с использованием

viewController.extendedLayoutIncludesOpaqueBars = YES;

возникает проблема с обоими полосами, перекрывающими мой вид таблицы.

Его можно управлять, установив

viewController.edgesForExtendedLayout = UIRectEdgeBottom;

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

Ответ 4

Похоже, вы настроили представление контроллера представления так, чтобы его дно находилось в том же положении, что и верхняя часть панели вкладок, когда она должна быть в нижней части экрана. Если вы это сделаете, то ваш контент будет отображаться правильно (содержимое отображается через панель вкладок или нет), если панель вкладок установлена ​​полупрозрачной или нет.

Ответ 5

Для тех, кто на самом деле хочет полупрозрачную Tabbar и табличное представление (или представление коллекции для меня), которое можно увидеть позади, вот мое решение для ios 7/8:

Если вы используете ограничения, вы должны добавить один в нижней части табличного представления в "Руководство по макету внизу", чтобы ваш столбец остановился перед Tabbar. Это пример с Storyboard, но это можно сделать и в коде.
enter image description here
Затем вам нужно просто убедиться, что вы все еще можете видеть табличное представление за вкладкой, задав для свойства" clipsToBounds" значение NO.

self.mytableview.clipsToBounds = NO;

Это мое решение, надеюсь, что это поможет.