xcode 4.5, iPhone 5 ломает мой UIScrollView

Итак, у меня есть довольно сложный проект. Я использую конструктор интерфейсов и xcode напрямую для создания объектов. Прямо сейчас у меня есть UIScrollViews, созданные в IB, где они должны быть, и UIButtons, построенные поверх этих прокруток. В одном и том же месте есть несколько прокруток, но это не должно иметь большого значения.

Так или иначе, проблема в том, что он отлично работает на iPhone 4. Но при сборке на iPhone 5 он перемещает Scrollviews в нижнюю часть экрана, где раньше было x=0, y=361. Все мои другие объекты размещаются правильно с пустым пространством под ними. Я знаю, как проверить на iPhone 5:

Я не знаю, как размещать здесь код с цветами и прочим, они делают его очень сложным, поэтому вот как я сделаю if/then:

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        CGSize result = [[UIScreen mainScreen] bounds].size;
        if(result.height == 480){
            // iPhone Classic
        }
        if(result.height == 568){
            // iPhone 5
        }
    }

Я не знаю, как сделать if/then в IB. Я попытался просто вручную изменить местоположение следующим образом:

[peopleScrollView scrollRectToVisible:CGRectMake(0, 449, 320, 58) animated:NO];

Это не сработало. Итак, что я спрашиваю, есть ли способ изменить местоположение UIScrollView в самом коде? Если нет, то я думаю, что мне придется вручную в коде собирать все 5 UIScrollViews, чего делать категорически не хочется.


person Jeff Stone    schedule 28.09.2012    source источник


Ответы (1)


Если вы выберете объект Scroll View, а затем щелкните модуль Size Inspector, вы заметите, что для маски авторазмера по умолчанию установлено значение: Left, Top.

Авторазмер/маска смещения слева вверху

В зависимости от параметра «Режим» вашего представления и параметра «Автоматическое изменение размера подпредставления» вашего представления, это представление и подпредставления будут сдвинуты вниз на 4-дюймовом экране по сравнению с 3,5-дюймовым экраном.

В зависимости от того, как ваше конкретное представление должно выглядеть на каждом экране, зависит от вас. В моем проекте я настраиваю маску авторазмера слева, сверху и снизу,

Left-Top-Bottom Automask/Offset, так как я хочу, чтобы мой UIScrollView и подпредставления оставались в верхней части экрана ( как показано в IB) на 3,5" и 4".

Вы также можете установить вертикальные и / или горизонтальные стрелки размера внутри поля на графике авторазмера.

Маска авторазмера по вертикали и горизонтали. Это попытается масштабировать объект соответственно для экранов с динамическим размером.

Маска авторазмера должна стать вашим новым лучшим другом с iPhone5.

См. Xcode Interface Builder. Чем отличаются эти настройки авторазмера маски? для получения дополнительной информации.

person NathanChristie    schedule 01.10.2012
comment
Любая идея, как это сделать без пера или раскадровки? - person Luke; 13.03.2014