2013-04-11 51 views
1

我今天在UICollectionViewCell中遇到了一些非常奇怪的行爲,我希望你們中的一個人能夠對此有所瞭解。UICollectionViewCell中的不透明UILabel具有奇怪的呈現行爲

我無法向您展示代碼或完整的屏幕截圖,但我會嘗試儘可能地進行解釋和說明;

我有一個UICollectionView有幾個單元並支持水平滾動。 在單元格中,我有一個標籤,我在 - (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath上設置了標籤,並在- (void)prepareForReuse上清除。

似乎很正常,我甚至有一個完全像這樣的實現,沒有任何怪異的工作。

現在,出於性能原因,我在Interface Builder中設置了UILabel的不透明度ON。 當我周圍幾次滾動,我能看到這一點:

weird rendering behavoir

每當我變成不透明關在Interface Builder中,我能看到這一點: enter image description here

我有很多與UITableViews和UICollectionViews(和重用等),但經驗是沒有辦法,我可以解釋這種行爲正常......

+0

好像你在堆疊兩個標籤。 – 2013-04-11 09:56:59

+0

@JonathanCichon怎麼樣?我通過IB放置了一個標籤並重新使用(如上所述)。即使我正在堆疊,不透明度的ON/OFF如何導致這種情況(如果是這種情況,我甚至會懷疑它是另一種方式)。 – Jake 2013-04-11 10:08:24

+1

如果您使用的是opague(而不是alpha),則標籤的上下文不能保證在重繪之前清除。所以你最終可能會看到新文本背後的原文。 Opague只使用客戶的drawRect實現,它利用舊的上下文或填充整個屏幕。 – 2013-04-11 21:36:02

回答

0
yourLabel.backgroundColor = UIColor.whiteColor() 

UILabel的默認回底色是清晰的顏色。如果將標籤設置爲不透明,則還需要將背景顏色設置爲不透明顏色。