2010-07-20 69 views
2

我得到了UIView的一個子類,在其中使用drawInRect:withFont:lineBreakMode:alignment:方法繪製NSString對象。iPhone - UIView方向更改

不幸的是,當我改變設備的方向時,比如說從縱向模式轉換爲橫向模式,文本不會被正確地重繪,但會根據我的意圖進行縮放和扭曲。

我該如何解決這個問題?

回答

4

這是Core Animation動畫過渡的一部分。拍攝您視圖的快照,然後拉伸/移動到新位置。

有很多方法可以解決這個問題。首先,你可以試試這個:

self.contentMode = UIViewContentModeRedraw; 

這可能是你所需要的,並會告訴核心動畫重繪的內容,而不是使用快照。如果您仍然有問題,可以嘗試定義拉伸的「可拉伸」區域而不是文字。例如,如果您知道自己的視圖中沒有任何文本的垂直切片,則可以將內容拉伸定義在該小節中,並且任何拉伸只發生在那裏,並希望保持文本不變。

CGFloat stretchStartX = 25.0f; 
CGFloat stretchEndX = 30.0f; 

/* Content stretch values are from 0.0-1.0, as a percentage of the view bounds */ 
self.contentStretch = CGRectMake(stretchStartX/self.bounds.size.width, 
           0.0f, 
           stretchEndX/self.bounds.size.width, 
           1.0f); 

這使視圖以僅x與被拉伸值25和30