Скрытие супервизора без скрытия его подвидов

Как правило, я знаю, что для этого есть обходные пути, но есть ли в iOS SDK какой-либо простой способ скрыть супервизор, не скрывая его подвиды?

У меня есть родительский вид, который является фоном для нескольких других представлений. Я хотел бы скрыть родительский элемент, либо установив его прозрачность на 0, либо установив «скрытый» или что-то в этом роде - проблема в том, что эти изменения влияют на все подпредставления родительского элемента.

Опять же, я понимаю, что обычно есть способ обойти это, но в этом случае я имею дело с mapView, а мои подпредставления представляют собой аннотации и наложения.

Спасибо, -Матт


person mag725    schedule 19.11.2010    source источник


Ответы (2)


Обновить

Да, MKMapView будет иметь несколько слоев с рендерингом, поэтому установка backgroundColor не сработает. Вы можете попробовать создать подкласс MKMapView, чтобы добавить свойство для включения / выключения этих слоев (путем удаления / повторного добавления их в представление). Но это кажется довольно опасным.

Вы можете попробовать установить для «clipsSubviews» MKMApView значение NO / FALSE и сбросить фрейм на 0,0,0,0. Но это повлияет на вашу способность получать события Touch в ваши подпредставления.

Вероятно, это лучшее решение для переоценки иерархии представлений. Сделайте это примерно так:

main-view
  map-view
  transparent-view
    control-1
    control-2
    etc.

Исходный

Установите backgroundColor на [UIColor clearColor]

person TomSwift    schedule 19.11.2010
comment
Я думаю, мне следует быть более ясным - эта конкретная ситуация имеет дело с MKMapView в качестве родительского представления. Не похоже, что вы можете просто установить цвет фона на чистый - на самом деле ничего не происходит :( - person mag725; 19.11.2010

Вы можете установить для свойства backgroundColor суперпредставления значение .clear, и это не повлияет на внешний вид подпредставления.

superView.backgroundColor = .clear
person ScottyBlades    schedule 01.07.2018