1

我遇到了一個問題,我想將徽標通知視圖添加到前面的UICollectionViewCell。我正在使用cell.layer.borderColor = [[UIColor redColor]CGColor]; UICollectionViewCell添加邊框。但是當添加邊框時,它會出現在徽章視圖的頂部。將子視圖帶到前面

enter image description here

我在子類UICollectionViewCell

我試過了,[self bringSubviewToFront:self.badge];self.badge.layer.zPosition = 1;類使用,[self addSubview:self.badge]; 徽章視圖添加到單元格:

enter image description here

添加邊框之後但它沒有幫助。我在類似的帖子上發現了這些解決方案,但我認爲我做錯了什麼。如果有人能指出這一點,我會很高興。謝謝。

編輯 我根據建議做了一個小的變化,並沒有[self.contentView addSubview:self.badge];而不是[self addSubview:self.badge];。當我調試視圖並檢查所有視圖層時,它確實在邊框上顯示徽章,但那不是模擬器中的情況。

+0

這是因爲您正在將徽章添加到您正在應用邊框的相同視圖中,只需添加另一個視圖,而不是在主視圖中應用邊框。 – iphonic

+0

但是在這種情況下,bringSubviewToFront仍然可以正常工作,對吧? – TKutal

+0

嘗試設置'cell.layer.borderWidth',也許這可以幫助你的邊界。 –

回答

2

正如@iphonic所說,你無法使用相同的視圖來繪製邊框幷包含徽章。

嘗試設置這些視圖層次:

Cell 
    |- ContentView 
     |- Main View (Apply border here) 
     |- All you content 
     |- Badge 
0

您可以創建一個特定的子視圖爲您定製UICollectionViewCell的邊界,所以當你需要使它出現,那麼你就可以輕鬆地管理把徽章到前面。

編程它可能是這樣的(在自定義UICollectionViewCell

UIView* border = [[UIView alloc] initWithFrame:cell.frame]; 
border.tag = 1001; 
border.layer.borderColor = [[UIColor redColor]CGColor]; 
[self addSubview:border]; 

而當你需要添加和顯示徽章前期

[self addSubview:self.badge]; 
[self bringSubviewToFront:[self viewWithTag:1001]]; 
[self bringSubviewToFront:self.badge]; 
0

使用的徽章單獨的CALayer。看起來您正在同一圖層中繪製徽章和邊框,因此合併了這兩個圖像。

+0

請檢查編輯。 – TKutal

+0

出於純粹的興趣,當您將badgeView的backgroundColor設置爲純色時發生了什麼? –

+0

邊框出現在徽章上,我不知道爲什麼會發生這種情況,因爲在「視圖調試」中徽章顯然是在邊界之上。 – TKutal