Обновите UIView до ScaleFactor 2.0 для iPhone4

У меня прекрасно работает программа на моем iPhone 4. Она использует созданный мной класс UIView (называемый TestView) для рисования графики с использованием Quartz (очень простая графика, например, несколько линий и кругов компьютерной графики). Однако мне нужно воспользоваться новым экраном с более высоким разрешением на iPhone 4. В настоящее время обеспечение обратной совместимости с iPhone 3, перемещение на одну "точку" в вашем коде вызывает перемещение на 2 пикселя на экране iPhone 4., Обновив UIView до масштабного коэффициента 2,0, вы можете изменить отображение с логического координатного пространства на пиксельное пространство, чтобы воспользоваться преимуществами более высокого разрешения iPhone 4. Это должно быть легко; Я просто не могу найти документацию о том, как изменить масштабный коэффициент UIView.

Например, любая линия, которую я рисую, должна указываться функцией CGContextSetLineWidth(context, 1.0); заканчивается рисование линии шириной 2 пикселя. Мне нужно изменить это, чтобы на самом деле нарисовать один пиксель в ширину.

Я нахожу объяснения, но нет примеров или методов изменения масштабных коэффициентов в объяснениях Apple о поддержке экранов высокого разрешения:

http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/SupportingResolutionIndependence/SupportingResolutionIndependence.html

В документации UIView содержится атрибут contentScaleFactor, но нет метода "set". Измените строку ниже с ttp: // на http: //, чтобы превратить в URL:

TTP://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/cl/UIView

1 ответ

Итак, iPhone 4 достаточно хорош, чтобы автоматически сделать все его UIViews масштабным фактором 2. Более серьезная проблема заключается в том, что CG отображает линии необычным образом (насколько я могу судить). Если вы сделаете ширину линии равной 1,0/contentScaleFactor (то есть 0,5 для iPhone 4), и проведете линию прямо вверх и вниз (или прямо из стороны в сторону), в половине случаев это будет идеальная, яркая линия шириной один пиксели. Но в другую половину времени он представляет собой строку шириной два пикселя, причем обе строки пикселей освещены только наполовину. Это выглядит хорошо в сложных ситуациях, особенно когда речь идет о движении, но если вы просто исследуете одну строку, это довольно раздражает.

Хак, чтобы обойти это для одной строки, это "перемешать" координату на половину значения. Поэтому, если вы рисуете от (0,0) до (0,10) и получаете линию "двойной ширины", попробуйте нарисовать от (0,5, 0) до (0,5, 10).

Другие вопросы по тегам