2011-01-13 4 views
5

Есть ли способ сделать прозрачность UIPopOver (альфа = 0,75 или около того). К сожалению, для UIPopOver нет альфа-свойства. Мне нужно представить popover, чтобы вид под ним все еще был частично видимым. Любые идеиПрозрачный UIPopover

ответ

4
popoverController.contentViewController.view.alpha = 0.5; 

альфа является свойством UIView, так что вам нужно, чтобы получить представление о поповере, а затем установить альфа к этой точке зрения.

+1

В то время как это должно работать в теории, на самом деле это не сработает. –

3

В настоящее время нет собственности, чтобы установить альфа UIPopoverController.

Если вы: popoverController.contentViewController.view.alpha = 0.5;

Внутренний просмотр контента & будет транспарант, а не сам UIPopoverController.

Related question

6

Начиная с iOS5.0, один может предоставить собственный фон для UIPopoverController. Этот фон должен быть получен от UIPopoverBackgroundView, который обеспечивает нормальные свойства UIView, такие как alpha. Обратите внимание, что имя немного запутанно - UIPopoverBackgroundView обеспечивает фрейм-стрелку, а также фоновое изображение.

Так что, если вам нужно полностью полупрозрачным UIPopoverController, все, что вам нужно сделать, это поставить UIPopoverBackgroundView класс, который устанавливает его alpha к чему-то ниже 1.0. Вам также необходимо убедиться, что ваше представление contentViewController (полностью) прозрачно.

Пример:

enter image description here


Для получения дополнительной информации, see the popoverBackgroundViewClass property of UIPopoverController:

popoverBackgroundViewClass 

Класс, используемый для отображения поповер фоновое содержание.

@property (nonatomic, readwrite, retain) Class popoverBackgroundViewClass 

Обсуждение

Значение по умолчанию этого свойства равно нулю, что указывает на то, что контроллер поповер должен использовать внешний вид поповер по умолчанию. Значение это свойство для значения, отличного от nil, вызывает контроллер popover , чтобы использовать указанный класс для рисования фонового содержимого popover. Указанный вами класс должен быть подклассом UIPopoverBackgroundView.

Доступность Доступно в iOS 5.0 и новее. В UIPopoverController.h

+0

Havent использовал его еще, но приятно видеть, что, наконец, больше настраивается UIPopover – Jasper

+3

. Эта поддержка устарела в iOS 9.0. Не думайте, что кто-нибудь знает, есть ли более новый способ? –

0

Теперь вы можете использовать свойство backgroundColour для popoverPresentationController для этого, например.

  if let popoverPresentationController = myController.popoverPresentationController { 
       popoverPresentationController.backgroundColor = UIColor(white: 1, alpha: 0.5) 
      } 

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

См this SO answer для более подробной информации.