2010-07-22 35 views
1

我有一個程序在我的iPhone 4上運行得非常漂亮。它使用我創建的一個類UIView(稱爲TestView)使用Quartz繪製圖形(非常簡單的圖形,例如幾條CG線和界)。但是,我需要利用iPhone 4上的新高分辨率屏幕。目前,確保向後兼容iPhone 3,通過代碼中的單個「點」移動,導致iPhone 4屏幕上移動2個像素。通過將UIView更新爲2.0的比例因子,您可以更改從邏輯座標空間到像素空間的映射,以充分利用iPhone 4的更高分辨率。應該很容易;我只是找不到有關如何更改UIView比例因子的任何文檔。例如,我繪製的任何線條,應該由函數CGContextSetLineWidth(context,1.0)指定; 最終畫出一條2像素寬的線。我需要改變它實際上畫一個像素寬。更新UIView到iPhone4的ScaleFactor 2.0

我找解釋,但沒有例子或方法改變規模因素的支持高分辨率屏幕蘋果的解釋:

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

UIView的文檔提供了一個contentScaleFactor屬性,但沒有「設置」方法。將以下行從ttp://更改爲http://以變爲網址:

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(即iPhone 4的0.5),並且上下畫一條直線(或直線到另一側),則一半時間它將成爲寬度爲1的完美亮線像素。但是另一半時間,它把這個作爲一條寬度爲兩個像素的線,兩條像素線都只有一半點亮。這在複雜的環境中看起來不錯,特別是涉及到移動的環境,但如果你只是檢查一條線,這是非常煩人的。

解決這個問題的方法是用一個數值「擺動」座標。因此,如果您從(0,0)到(0,10)繪製並獲得「雙倍寬度」線,請嘗試從(0.5,0)到(0.5,10)進行繪製。