iOS 6/7 deltas делает фоновый контейнер исчезающим
В настоящее время я работаю над устаревшим приложением, которое изначально разрабатывалось до выхода iOS 6, не говоря уже о iOS 7. Часть моей работы заключается в том, чтобы оно выглядело приемлемым как для iOS 7, так и для более старых версий. Вот так выглядит мое приложение в iOS 7, которое должно выглядеть примерно так:
Прежде всего: мой корневой элемент - это обычный вид, который просто заполняет экран, как обычно. Внутри это, по порядку, ScrollView, содержащий изображение и обе фиолетовые полосы, которые являются видами с метками в них.
То, что я сделал, чтобы заставить его работать на iOS 6 и ниже, это:
- Я добавил дельту высоты -20 к верхнему фиолетовому столбцу.
- Я добавил дельты -20 Y к ScrollView и нижней фиолетовой панели, и, конечно, к меткам на верхней панели.
Однако вот что происходит:
Теперь, во-первых, разные языки не имеют отношения к проблеме, это просто способ настройки моего физического устройства тестирования. Раскадровки настроены одинаково.
Из этого я извлекаю то, что элементы располагаются там, где они должны быть, поскольку все их дочерние элементы отображаются в правильных местах, но цвет фона для представлений, кажется, становится прозрачным.
Некоторые полезные вещи, которые нужно знать:
- Если я не упомянул выше, что я установил высоту, ширину, X или Y дельта, тогда это установлено в 0.
- Все позиционирование сохраняется в раскадровке. ScrollView имеет X, Y, ширину и высоту 0, 40, 320, 420 соответственно. Верхняя полоса - 0, 0, 320, 40, а нижняя - 0, 460, 320, 20.
- Кнопки, которые вы видите по бокам, и логотип внизу вставляются программно. Их родительский элемент является основным, поэтому они находятся на том же уровне иерархии, что и ScrollView и две панели.
- Даже если программно установить красный цвет фона (например), он остается невидимым в iOS 6. В iOS 7 он становится красным, поэтому код, который я использую для этого, подойдет.
Кто-нибудь знает, что может привести к исчезновению моего фона?
1 ответ
Попробуйте добавить это к viewDidLoad
if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) { // if iOS 7
self.edgesForExtendedLayout = UIRectEdgeNone;
}