2010-07-22 3 views
1

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

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

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

http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/SupportingResolutionIndependence/SupportingResolutionIndependence.html#//apple_ref/doc/uid/TP40007072-CH10-SW12

UIView документация дает атрибут contentScaleFactor, но не «установить» метода. Измените строку ниже с 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).