2012-04-23 97 views
3

我在視圖上有許多UILabel的多個視圖。 (全部在Interface Builder中構建)。校正CGAffineTransformMakeScale後的模糊文字

然後,我試圖在捏住屏幕時創建視圖的「較小」副本。

要做到這一點我申請:

view.transform = CGAffineTransformMakeScale(.5, .5); 

,然後我也調整視圖框架。

問題是,轉換後,我所有的UILabels中的文本變得「模糊」。它不像全面視圖那樣保持像素完美。

有沒有辦法在轉換後增加標籤的像素化?

回答

8

將轉換應用於UIView或CALayer只是縮放該圖層或視圖的柵格化位圖。這會導致UI元素模糊,因爲它們不會以新的比例重新渲染。

如果您確實希望您的文本或圖像在新比例因子下更加清晰,那麼您將需要手動調整它們的大小並使它們重繪而不是應用變換。我描述了一種使用UIScrollView託管的UIView在this answer中執行此操作的方法。

您可能可以創建一個遍歷一個主視圖的視圖層次結構的方法,遞歸地讀取每個子視圖的框架,縮小它的大小,然後強制重繪其內容。變換仍然非常適合用於交互式操作或動畫,但您可以在操作或動畫結束時觸發全手動縮放和重繪。

+0

我認爲這可能是這種情況。 – 2012-04-23 17:59:15