2015-02-06 2 views
0

У меня есть код, который показывает всплывающее окно. Всплывающее окно имеет основной вид, который является черным, и одно подвью, которое является белым, и что в subview есть несколько меток, кнопка и прочее, с которыми пользователь взаимодействует. Я хочу, чтобы окружающая черная часть была частично прозрачной (alpha = 0.7), но белая часть внутри была полностью непрозрачной (alpha = 1.0). Я не мог этого достичь, по какой-то причине значение родителя переопределяет его дочерние значения, и я получаю либо полностью непрозрачное представление, либо представление, где также ярлыки и кнопки являются частично прозрачными.Как создать контроллер представления с частичной прозрачностью?

Что я могу сделать?

Код, который показывает всплывающее окно:

@IBAction func getLocation(sender: AnyObject) { 
    var p = PopupViewConrtoller(list: list, callback) 
    var x = UINib(nibName: "PickerPopup", bundle: nil).instantiateWithOwner(p, options: nil) 
    self.presentViewController(p, animated: false, completion: nil) 
    } 
  • Я изменил непрозрачность только в инспекторе атрибутов.

ответ

1

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

Что вы можете сделать это,

-set mainView background color as clear color 
-add one more subview1 to mainView with size same as main view and set the background color as blackColor with desired transparency(alpha=0.7 as in required) 
-add your subview2(which is having labels, buttons etc.) to mainView but above subview1 in layer order. 

Я надеюсь, что это поможет вам достичь того, чего вы хотите.

+0

Отличная идея, я нашел способ сделать это проще. См. Мой ответ :) +1 –

0

Я полагал, что это невозможно сделать так, как я пытался. У Радзева есть хорошая идея, но лучший (и тот, который, вероятно, одобрит Apple-рецензенты), использует popover. This tutorial и this tutorial были полезными.

Смежные вопросы