Popover и табличный вид прозрачны

В моем приложении Ipad я использую поповер, но я не могу сделать его прозрачным. Поповер имеет вид изнутри; мой код:

UIViewController* popoverContent = [[UIViewController alloc] init];
UIView* popoverView = [[UIView alloc] initWithFrame:CGRectMake(600, 800, 100, 100)];   
popoverView.backgroundColor = [UIColor greenColor];
popoverContent.view = zoneViewController.view;
self.popoverController = [[UIPopoverController alloc] initWithContentViewController:popoverContent];
[self.popoverController presentPopoverFromRect:CGRectMake(1200, -200, 50, 375) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:TRUE];
[[[popoverController contentViewController] view] setAlpha:0.25f];

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

4 ответа

Решение
[[[popoverController contentViewController] view] setAlpha:0.25f];

Это изменяет прозрачность представления zoneViewController, которое будет вложено в Popover. Тем не менее, в настоящее время у вас нет возможности настроить внешний вид самого Popover. Вы можете контролировать размер и направление стрелки, но не цвет границы или прозрачность границ Popover.

Если вы действительно хотите прозрачную рамку Popover, вам придется написать свою собственную.

Связанный: Как настроить / стилизовать UIPopoverController

Я часами пробовал все решения, перечисленные на этом сайте, чтобы обеспечить прозрачность работы над UIPopoverController содержащий сгруппированный UITableView - Ни один из которых не работал для меня:

  1. Поместите всплывающее окно в родительском представлении и измените альфа в этом представлении. (НЕ УДАЛОСЬ)
  2. Измените альфа для различных комбинаций подпредставлений (фон табличного представления, ячейки табличного представления, фон всплывающего окна и т. Д.)
  3. Добавьте фоновые изображения в ячейки и измените альфа на них. (НЕ УДАЛОСЬ)
  4. Наконец: измените альфа в КАЖДОМ представлении в иерархии, начиная с представления содержимого всплывающего окна (СБОЙ)

В поповере есть представление черного корня с альфа-значением 1,0, и не имеет значения, что вы делаете с подпредставлениями (или если вы добавляете его в суперпредставление), прозрачность не работает. Итак, я сканировал иерархию представлений (методом проб и ошибок), пока не добрался до этого проклятого черного представления и явно установил ITS альфа. Успех! Все, что я должен был добавить, это одна строка кода ПОСЛЕ того, как всплывающее окно было видно:

self.popoverController.contentViewController.view.superview.superview.superview.alpha = 0.5;

NB. Это решение, скорее всего, перестанет работать, когда Apple сделает обновления для UIPopoverControllerтак что пользуйтесь на свой страх и риск!

Поповер по умолчанию прозрачный. Если вы помещаете подпредставления в представление Popover, то вы должны сделать подпредставления ' backgroundColor прозрачный.

Итак, в вашем случае вам нужно будет установить tableView backgroundColor собственность на [UIColor clearColor] и вам также нужно будет сделать ваши ячейки tableView прозрачными.

Не забудьте сделать ваши клетки прозрачными!

Начиная с iOS 5 вы можете установить пользовательский UIPopoverBackgroundView. Проверьте обсуждение в Пользовательской настройке фона представления UIPopoverController и цвета границы

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