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
содержащий сгруппированный UITableView
- Ни один из которых не работал для меня:
- Поместите всплывающее окно в родительском представлении и измените альфа в этом представлении. (НЕ УДАЛОСЬ)
- Измените альфа для различных комбинаций подпредставлений (фон табличного представления, ячейки табличного представления, фон всплывающего окна и т. Д.)
- Добавьте фоновые изображения в ячейки и измените альфа на них. (НЕ УДАЛОСЬ)
- Наконец: измените альфа в КАЖДОМ представлении в иерархии, начиная с представления содержимого всплывающего окна (СБОЙ)
В поповере есть представление черного корня с альфа-значением 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 и цвета границы