2012-10-29 20 views
30

Quando si crea un'applicazione per iPad, come si disegna un bordo attorno a un UICollectionViewCell?UICollectionViewCell Border/Shadow

Ulteriori dettagli: Ho implementato una classe ProductCell che estende UICollectionViewCell. Ora, vorrei assegnare alcuni dettagli di fantasia, ad es. un bordo, ombra, ecc. Tuttavia, quando si tenta di utilizzare qualcosa come this here, Xcode mi dice che il tipo di ricevitore "CALayer" è una dichiarazione diretta.

risposta

71

Solo per un po 'di più implementazione:

#import <QuartzCore/QuartzCore.h> 

in your.m

Assicurarsi la tua classe implementa

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

poiché è qui che la cella è impostata.

È possibile quindi modificare cell.layer.background (disponibile solo una volta al quarzo è importato)

Vedere sotto

- (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

è necessario includere il quadro QuartzCore e importare l'intestazione nella tua classe:

#import <QuartzCore/QuartzCore.h> 
11

Swift

aggiornato per Swift 3

Supponendo di avere il vostro Collection View set up with the required methods , puoi semplicemente scrivere alcune righe di codice per aggiungere il bordo.

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 
} 

Note

  • Non è necessario importare QuartzCore a Swift, se è già stato importato UIKit.
  • Se si desidera aggiungere ombra, vedere this answer.
Problemi correlati