2012-04-02 36 views

回答

80

CGRectIntegral任何十進制值轉換爲整數等效
看到的圖像可能是你能理解enter image description here

如何解決呢?

frame = CGRectIntegral(frame); 

- 或 -

myTextView.frame = CGRectIntegral(myTextView.frame); 

看到這個for more information of CGRectIntegral

+1

左側的圖像有點模糊,因爲幀設置在像素邊界上。所以起源就像20.5,8.5。 CGRectIntegral將其捕捉回20,8。 – ariopolis 2015-07-14 17:02:30

+3

如果要在iOS模擬器中以紫色突出顯示模糊圖像,請選擇「調試」>「顏色未對齊的圖像」。那樣的話,你不必眯着眼睛找出哪些東西模糊。 – JoJo 2015-07-24 21:05:45

+0

重要的是補充:CGRectIntegral用於填充/繪製像素緩衝區。撫摸形狀以其座標爲中心,因此實際上您可能需要非整數(例如1x屏幕上的0.5)座標,以使它們看起來很清晰。請參閱此處以獲取更詳細的說明:http://orangejuiceliberationfront.com/are-your-rectangles-blurry-pale-and-have-rounded-corners/ – uliwitness 2017-02-11 15:21:58

7

一個特別的用途是修復那些不與屏幕上的像素完全一致的幀。

看到這個問題:UITextField blurred text

如果標籤或文本框有一個框架,是不是像素對齊時,渲染到屏幕,文本將出現模糊。如果使用除法計算幀(例如,將其居中在父視圖中),則會發生這種情況。

CGRectIntegral將刪除幀的小數部分,修復此問題。但請注意,視網膜顯示.5幀的值是像素對齊的,但CGRectIntgral仍會移除小數部分。

13

CGRectIntegral方法用於創建整數rect。我的意思是說假設如果你在應用程序中計算幀,你可能會獲得浮點值。

將浮點值設置爲某個UIElement的框架,如UILabel會使文本看起來模糊。爲了避免這種情況,我們使用CGRectIntegral。請看看下面的例子,

NSLog(@"%@",NSStringFromCGRect( CGRectIntegral(CGRectMake(0, 15.6, 16.1, 20.2)))); 

這將打印,{0,15},{17,21}。

此解釋可在頭文件中找到。

/* Expand `rect' to the smallest rect containing it with integral origin and 
    size. */ 
相關問題