2012-07-22 93 views
14

我讀過一些帖子,其推薦使用:的UIGraphicsBeginImageContext必須是視網膜感知的?

UIGraphicsBeginImageContextWithOptions((image.size), NO, 0.0f) 

代替:

UIGraphicsBeginImageContext(image.size). 

因爲第一個使用繪圖時視網膜規模,否則,你得到塊狀圖像。

我對使用或不使用視網膜縮放選項有點困惑。

如果我有一張1000x1000像素的照片,並且我調用UIGraphicsBeginImageContext傳遞這些尺寸,那麼我是不是指定了我要繪製的點數?這可以嗎?

或者我應該調用UIGraphicsBeginImageContextWithOptions傳遞一半尺寸(500x500px)?它有什麼區別?

+1

'我讀過一些職位,其推薦的使用...因爲第一個使用的Retina級繪圖時,否則,你得到塊狀影像 - 這個筆記幫了我很多。謝謝! – 2014-05-22 14:39:55

回答

11

您可以通過以下方法

[[UIScreen mainScreen] scale] 

有了這些信息,你可以決定你想要多少分畫讓您的設備的比例值。

+0

我知道,但我想現在是如果使用:UIGraphicsBeginImageContext(1000x1000px)與使用UIGraphicsBeginImageContextWithOptions((500x500px),NO,0.0f)任何不同。 – jvic 2012-07-22 20:29:23

+0

是不是視網膜只顯示圖像時重要,不繪圖?我的意思是,我認爲這並不重要的圖像的大小,只要當我顯示它,我顯示在一半的大小(視網膜)的視圖。 – jvic 2012-07-22 20:35:59

+1

@jvic他們都給你一個1000x1000px的圖像。但我認爲不同的是,當使用UIGraphicsBeginImageContext(1000x1000px)時,屏幕上顯示的圖形與1000x1000點,但UIGraphicsBeginImageContextWithOptions((500x500px),NO,0.0f)與500x500點,這是我的猜測。 – 2012-07-23 05:51:12

10

您可以創建這樣的圖像內容:

UIGraphicsBeginImageContextWithOptions(size, false, UIScreen.mainScreen().scale) 
+1

根據文檔:_「如果您指定的值爲0.0,則縮放係數將設置爲設備主屏幕的縮放係數。」_。因此,在那裏使用'0.0'而不是'UIScreen.mainScreen()。scale'具有相同的效果,但會受益於底層優化。 – 2015-10-07 11:13:38

+0

感謝您提供這些信息,我看到文檔中提到scale = 0.0等於當前的屏幕比例,但在引擎優化下找不到任何內容。你能詳細說明嗎? – 2015-10-07 21:20:32

相關問題