2012-03-06 3 views
0

У меня есть UISwitch на моем сопернике, загруженном с xib. Это положение x больше, чем ноль, и он выглядит нормально на симуляторе iOS 5. Но когда я пытаюсь запустить его на 4.3 симуляторе, похоже, что позиция UISwitch равна нулюUI выглядит по-разному на iOS 5 iOS 4.3

Где моя проблема?

ответ

6

, а также их изменения во внешнем виде, UISwitch эс сжались между прошивкой 4 и 5. На основе быстрого сравнения скриншота , они были около 94pt в ширину и теперь только 76pt. Итак, если у вас есть переключатель, который, скажем, выровнен по правому краю на маску авторазмера, то он будет расширяться дальше влево в 4, чем в 5.

К сожалению, вы можете сделать это очень мало, кроме проектирования для 94pt виджетов и принять немного лишнего пустого пространства под 5. Поскольку построитель интерфейса позиционирует все вещи в точном положении пикселей, вместо того, чтобы применять логику компоновки, вполне возможно, вам придется выполнить ручную программную настройку.

+0

У меня все мои UISwitches установлены на фиксированные вершины и слева в xib, но под iOS 4 они расширяются влево и накрывают над меткой. Что я делаю не так? – jowie

+0

Если они зафиксированы слева, я думаю, что это случай механизмов, которые загружают NIB, вычисляя соответствующий кадр для размера iOS 5 (на основе информации в NIB), устанавливая это для 'UISwitch' и переключатели в iOS 4 делают какую-то проверку на этом фрейме, что приводит к их корректировке ширины, но точно не знает, что делать с началом. – Tommy

1

если ИОС 5 является вопрос вы можете настроить позицию, основанную на версии IOS

 BOOL isIOS5 = [[[UIDevice currentDevice] systemVersion] intValue] >= 5; 
+0

Как я понимаю, нет никакого способа сделать что-то в xib, чтобы сделать то же самое? – earsonheart

+0

Нет, вы должны сделать это в классе – holographix

+0

Возможно, вам будет разумнее запрашивать объекты, подключенные к вашим точкам коммутатора, для их размера и настроить в соответствии с этим, а не (неявно) жесткое кодирование размеров для 4 и 5. Таким образом, вы вообще не выполняйте проверку 'systemVersion', например 'someSwitch.frame.size.width' – Tommy