2012-07-06 38 views
2

我有UIView這是不大的整個屏幕,我希望它出現在屏幕中間。我這樣做,用下面的代碼:UIView的內容模糊,當我居中

self.dialogView.center = CGPointMake(self.view.bounds.size.width/2.0, self.view.bounds.size.height/2.0); 

不幸的是,當我中心會這樣,UIView的內容看起來很模糊。 enter image description here

我已經與這個固定:

self.dialogView.center = CGPointMake(self.view.bounds.size.width/2.0 + 0.5, self.view.bounds.size.height/2.0); 

現在的UIView的內容出現,因爲它應該:)

enter image description here

你能告訴我,爲什麼這些內容變得模糊,爲什麼我需要將0.5添加到左側位置偏移量?

+0

這是否也發生在非Retina顯示器上呢? – 2012-07-06 17:21:50

+0

@ A-Live:問題中的圖片來自非Retina iPhone模擬器。在視網膜上它並不模糊。 – xx77aBs 2012-07-06 21:45:08

+0

對,使用視圖中心自然加上一點視網膜。 – 2012-07-09 08:09:06

回答

8

新的中心是造成控制的視角落在半像素上,如{20.5,20.5}。由於屏幕無法繪製僅半個像素,因此渲染引擎會嘗試通過儘可能擴散圖像來獲得相同的效果,從而導致模糊的圖像。

您需要確保您的所有視圖的來源都是整數。

+0

是的,我確定該中心不在半像素上,但我忘記檢查原點:)謝謝! – xx77aBs 2012-07-06 21:49:50

+1

@ xx77aBs是的,實際上它並不是中心,因爲如果事物的寬度是15,例如,事物的中心x自然是7.5(假設原點是0),這沒關係。但起源必須是整數,所以整個視圖是像素對齊的;) – 2012-07-06 22:28:41

+0

@JasonCoco謝謝哥們! – 2012-07-24 08:18:46

1

嗯,我認爲這是由於如何將UIView放置在屏幕的像素網格上。如果你在普通屏幕(72像素/英寸)上考慮它,0.5點意味着0.5像素,這可能會導致你看到的...這是我的理論至少:P