Ответ @iPP не самый лучший. Установка фрейма в коде приведет к тому, что ваш код будет пронизан проверками версий iOS, и этот код будет очень сложным при поддержке нескольких ориентаций устройств.
Я думаю, что лучший способ заключается в использовании новых функций "IOS 6/7 дельт" в Xcode 5.
И использование ключа "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.
Полезно для меня! Благодаря! –
отлично подходит человеку asnwer –
Просто наткнулся на эту проблему на iOS7, и я программно создаю свой пользовательский вид прогресса. Я хочу указать, что разработчик должен установить рамку UIProgressView AFTER для установки дорожки и заполнения изображений для просмотра прогресса. Так что что-то вроде progressView.trackImage = ...; и progressView.progressImage = ...; затем progressView.frame = CGRectMake (.....); – Zhang