2012-08-02 3 views
8

Я обновил Lion до Mountain Lion на прошлой неделе и с тех пор получил эту действительно странную ошибку на симуляторе iOS. На первом снимке показан обычный симулятор, а второй - симулятор «Retina». Кто-нибудь знает, как это исправить? Я попытался удалить Xcode и переустановить, но не повезло.Weird «Retina» поведение симулятора iOS

Нормальный симулятор:

Normal simulator

Retina тренажер:

Retina simulator

Спасибо за любую помощь заранее!

Редактировать: Это не симулятор iPad. Вот скриншот меню «Устройства».

Devices Tab

+0

Не странно, это ваше приложение iphone, работающее на симуляторе iPad. – KevinDTimm

+0

Попробуйте создать новый проект Xcode. Запустите его на симуляторе сетчатки. Кроме того, обновите до Xcode 4.4, если вы этого не сделали. В конечном счете, я так сильно смеялся над рисунком, выглядел как ошибка :) – Mazyod

+0

Интересно. Попробуйте перейти в меню iOS Simulator и выберите «Сбросить содержимое и настройки». Может быть, это поможет –

ответ

-3

Это симулятор Ipad. Измените его на iPhone.

Оборудование-> Устройство

+8

Неправильно: http://cl.ly/IUUP –

1

У меня была такая же проблема, попробуйте изменить разрешение экрана на вашем компьютере. Я использую Retina Mac, поэтому пришлось немного поиграть.

Xcode предоставил вам другой симулятор для сетчатки, но, похоже, они построили логику, чтобы иметь более высокое разрешение в одном simluator.

+0

Я недавно испытал эту проблему и могу подтвердить, что в моем случае не был связан с моим кодом проекта. В зависимости от разрешения экрана у вас есть ваш симулятор, он будет обслуживать разные интерфейсы. И.Е. 1. На моем дисплее Thunderbolt он показал iPad как интерфейс границы для iPhone (Retina 4-inch). 2. На моем экране Retina Macbook Pro, тот же параметр отобразит интерфейс iPhone 5. Примечание. Мне пришлось сменить версию устройства на другую, чтобы увидеть затронутое изменение на другом дисплее. –

0

Наиболее важным симптомом здесь является то, что ваш пользовательский интерфейс занимает точно пространство, которое вы ожидаете, если оно будет отображаться на стандартном iPhone. И другим важным симптомом является то, как ваши UILabels выглядят размытыми - это часто является признаком того, что UILabel не получает правильную шкалу для экрана, особенно если растеризуется.

Когда вы инициализируете свое приложение в делетете приложения (didFinishLaunchingWithOptions), проверьте, не были ли вы жестко закодированы границы для UIWindow или rootViewController для вашего UIWindow для стандартного разрешения iphone (т. Е. 320x480). Они должны быть установлены с использованием границ [[UIScreen mainScreen]], а не жестко закодированы до фактических точек. Действительно, вы должны искать любое место в своем приложении, где вы жестко закодировали размеры экрана - выполните поиск по строкам «320» и «480» - это номера, которые никогда не должны появляться в вашем коде.

Другая возможность заключается в том, что вы установили некоторые из ваших растровых растровых изображений (layer.shouldRasterize = YES), но вы не установили layer.rasterizationScale в масштаб основного экрана (например, [[UIScreen mainScreen]] , который будет 2.0 в контексте Retina). Я видел такой же грязный UILabel, когда я не установил масштаб должным образом.

Я признаю, что, поскольку ваше сообщение говорит, что это изменение произошло только после обновления ОС, это, вероятно, не проблемы, но, чтобы быть уверенным, я бы их проверил.

Обновление: С другой стороны, жесткая кодировка этих границ, что плохой практикой, не может вызвать эту проблему, поскольку это правильные логические границы для iPhone, а ОС масштабируется для вас. Таким образом, между этими двумя предложениями, более вероятным виновником является то, что некоторые свойства, связанные с масштабами, устанавливаются неправильно. Другая возможность заключается в том, что вы используете UIView contentScaleFactor и неправильно устанавливаете его.