2013-09-18 2 views
1

У меня возникает ошибка рендеринга при использовании представления прогресса по умолчанию. Вместо того, чтобы использовать высоту 9px, при использовании представления прогресса по умолчанию изображение обрезается примерно до 4 пикселей. Мое приложение построено с помощью SDK iOS6, и проблема возникает при запуске на устройстве iOS7. Интерфейс построен с построителем интерфейса.По умолчанию рендеринг UIProgressView на iOS7 с использованием iOS6 SDK

Есть ли простые исправления для этой проблемы? Переключение стиля с «По умолчанию» на «Бар» в построителе интерфейса устраняет проблему, но это меняет внешний вид.

enter image description here

ответ

10

Настройка рамки в коде помогли мне решить эту проблему.

+0

Полезно для меня! Благодаря! –

+0

отлично подходит человеку asnwer –

+6

Просто наткнулся на эту проблему на iOS7, и я программно создаю свой пользовательский вид прогресса. Я хочу указать, что разработчик должен установить рамку UIProgressView AFTER для установки дорожки и заполнения изображений для просмотра прогресса. Так что что-то вроде progressView.trackImage = ...; и progressView.progressImage = ...; затем progressView.frame = CGRectMake (.....); – Zhang

0

Это похоже на то, что iOS7 разрезал представление прогресса, используя рамку iOS7 Style. У вас есть два пути. 1. установите стиль представления прогресса --- панель, вы можете сделать это в файле или коде nib. 2. используйте код для установки рамки. Что-то вроде: progressView.frame = CGRectMake (x, y, w, h);

Вторая сторона столкнется с проблемой макета при повороте или изменении макета. Таким образом, самый простой способ - установить стиль представления прогресса.

1

Ответ @iPP не самый лучший. Установка фрейма в коде приведет к тому, что ваш код будет пронизан проверками версий iOS, и этот код будет очень сложным при поддержке нескольких ориентаций устройств.

Я думаю, что лучший способ заключается в использовании новых функций "IOS 6/7 дельт" в Xcode 5. have a look here

И использование ключа "IOS 6/7 дельт" является:

Когда Авто Макет отключен, вы заметите область на вкладке калибровки области полезности (правая панель) Interface Builder, которая позволяет вам установить iOS 6/7 Deltas. Deltas можно настроить индивидуально для каждого вида и работать так, как вы ожидали. Если ваш раскадровка или ниб будет настроен на просмотр в качестве iOS 6, то установка дельта приведет к смещению и/или изменению размера этого представления по заданной величине дельты при запуске в iOS 7. В качестве альтернативы, если ваш раскадровка или кибер установлен для просмотра в прошивке 7, то дельты будут применяться при запуске в прошивке 6. Оба этих инструментов помогут вам поддерживать старые версии прошивки вместе с прошивкой 7

для UIProgressView, здесь вы можете попробовать установить «дельту Y» чтобы быть -7px, потому что iOS 7 просто уменьшает начало Y UIProgressView на 7 px, поэтому при работе в iOS7 мы должны вернуть его 7px.

+0

Не работает в iOS 7. Пожалуйста, предложите лучший способ. –

+0

@jianpx, я согласен. Мы должны были быстро создать исправление в Xcode 4.x, у которого не было опции delta. Таким образом, установка рамки была выходом. – iPP

Смежные вопросы