2012-10-29 153 views
30

構建iPad應用程序時,如何在UICollectionViewCell周圍繪製邊框?UICollectionViewCell邊框/陰影

更多細節:我實現了一個擴展UICollectionViewCell的類ProductCell。現在,我想分配一些花哨的細節,例如邊界,陰影等。但是,當試圖使用類似this here的東西時,Xcode告訴我接收器類型'CALayer'是前向聲明。

回答

71

只是爲了多一點的實現:

#import <QuartzCore/QuartzCore.h> 

在your.m

確保您的班級實施

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath; 

因爲這是單元格的設置。

然後,您可以更改cell.layer.background(僅一次石英進口)

見下

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath { 
    MyCollectionViewCell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"pressieCell" forIndexPath:indexPath]; 
    //other cell setup here 

    cell.layer.borderWidth=1.0f; 
    cell.layer.borderColor=[UIColor blueColor].CGColor; 

    return cell; 
} 
7

您需要包括框架QuartzCore並導入到頭類:

#import <QuartzCore/QuartzCore.h> 
11

斯威夫特

更新了斯威夫特3

假設你有你的Collection View set up with the required methods ,你可以只寫幾行代碼來添加邊框。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath as IndexPath) as! MyCollectionViewCell 
    cell.myLabel.text = self.items[indexPath.item] 
    cell.backgroundColor = UIColor.cyan 

    // add a border 
    cell.layer.borderColor = UIColor.black.cgColor 
    cell.layer.borderWidth = 1 
    cell.layer.cornerRadius = 8 // optional 

    return cell 
} 

注意

  • 沒有必要在斯威夫特導入QuartzCore如果您已經導入UIKit
  • 如果您還想添加陰影,請參閱this answer