2012-10-29 11 views
30

Podczas tworzenia aplikacji na iPada, jak narysować obramowanie wokół UICollectionViewCell?UICollectionViewCell Border/Shadow

Więcej szczegółów: Zaimplementowałem klasę ProductCell, która rozszerza UICollectionViewCell. Teraz chciałbym przypisać pewne fantazyjne szczegóły, np. granicy, cienia itp. Jednak przy próbie użycia czegoś takiego jak this here, Xcode mówi mi, że typ odbiornika "CALayer" jest deklaracją do przodu.

Odpowiedz

71

Tylko nieco więcej realizacji:

#import <QuartzCore/QuartzCore.h> 

w your.m

Upewnij Twoja klasa implementuje

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

ponieważ jest to miejsce ustawienia komórki.

Można wtedy zmienić cell.layer.background (dostępny tylko raz kwarc jest importowana)

Poniżej

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

Trzeba to ramy QuartzCore i importować nagłówek w swojej klasie:

#import <QuartzCore/QuartzCore.h> 
11

Swift

Aktualizacja dla Swift 3

Zakładając masz Collection View set up with the required methods , możesz po prostu napisać kilka linii kodu, aby dodać obramowanie.

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 
} 

Uwagi

  • Nie jest konieczne, aby zaimportować QuartzCore w Swift jeśli już importowane UIKit.
  • Jeśli chcesz dodać cień, zobacz this answer.
Powiązane problemy