2009-11-10 4 views
2

У меня есть вопрос, похожий на Can you override a parent UIView's alpha value on one of its subviews?Различного альфа для подвидов в том же контейнере

В некоторых случаях я хочу показать пользовательские полупрозрачные полноэкранного вида наложения над текущим видом. Хитрость в том, что я хочу, чтобы у нее была настраиваемая панель навигации наверху и какое-то другое содержимое (пусть это будет ярлык), и я бы хотел, чтобы панель навигации была непрозрачной, т. Е. Нарисовала все на исходном представлении. В то же время я хотел бы, чтобы все остальное содержимое было полупрозрачным. Я не хочу вмешиваться в панель навигации основного вида, потому что вообще не может быть панели навигации. Я хотел бы создать единый вид контейнера с панелью навигации и всем остальным содержимым на нем и добавить его в окно. Но ни одна из комбинаций цвета фона и альфы для контейнера, навигационной панели и содержимого, которые я могу придумать, кажется, работает.

Вопрос, который я нашел, предполагает, что невозможно, если контейнерный вид не непрозрачен. Мой случай может быть немного отличается, потому что есть простая граница между прозрачными и непрозрачными частями. Поэтому я все еще надеюсь, что есть простой способ. Или мне нужно управлять непрозрачной панелью навигации и прозрачным содержимым?

+0

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

ответ

1

Если я правильно понял ваш вопрос, вы должны сделать свой контейнер полностью прозрачным (backgroundColor = [UIColor clearColor]) и добавить непрозрачную навигационную панель и полупрозрачный контентный вид в представление контейнера.

+0

Спасибо, это похоже на то, что мне нужно. Я попытался установить цвета и альфа в Interface Builder, и я до сих пор не вижу clearColor. Если я программно его установлю в viewDidLoad, он отлично работает. Еще раз спасибо. – SergGr

+0

Обновление: довольно долго вы можете установить «чистый цвет» из интерфейса Builder. – SergGr

0

Редактировать: игнорировать этот ответ. Я не понял этот вопрос.

Ответ предыдущего сообщения неверен (как я понял вопрос). Альфа для каждого отдельного представления устанавливается независимо. Вам необходимо настроить альфа на нужный уровень, когда вы добавляете каждый вид, в Interface Builder или после загрузки с nib.

Если вы не хотите перекрывать навигационную панель, вы можете (1) установить положение рамки оверлейного представления под панелью навигации или (2) создать два вида сестры в окне наложения, одно представление прозрачно над навигационная панель, а другая - ваши полупрозрачные элементы.

+0

Как я прокомментировал ваш другой ответ, ответ предыдущей почты правильный. Несмотря на то, что каждая альфа-подзадача может быть установлена ​​независимо от основного вида, они компонуются в порядке их места в иерархии представлений. Альфа альфа-эффекта эффективно умножается на основной вид. –

+0

Вижу, я неправильно понял. – TechZen