33

iPadアプリを作成する場合、UICollectionViewCellの周囲に境界線を描画するにはどうすればよいですか?

詳細:UICollectionViewCellを拡張するクラスProductCellを実装しました。ここで、境界線や影など、いくつかの凝った詳細を割り当てたいと思います。ただし、ここでこのようなものを使用しようとすると、Xcodeはレシーバータイプ「CALayer」が前方宣言であると通知します。

4

5 に答える 5

76

もう少し実装するために:

#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;
}
于 2013-06-06T13:15:52.953 に答える
24

迅速

Swift3用に更新

コレクションビューに必要なメソッドが設定されていると仮定すると、数行のコードを記述して境界線を追加できます。

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すでにインポートしている場合は、Swiftにインポートする必要はありませんUIKit
  • シャドウも追加したい場合は、この回答を参照してください。
于 2015-10-29T08:20:24.457 に答える
7

QuartzCoreフレームワークをインクルードし、ヘッダーをクラスにインポートする必要があります。

#import <QuartzCore/QuartzCore.h>
于 2012-10-29T12:16:09.323 に答える
2

スウィフト4

cell.layer.borderColor = UIColor.black.cgColor
cell.layer.borderWidth = 1

セルを作成した後、データソースメソッドに追加します

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionViewCell", for: indexPath)
     cell.layer.borderColor = UIColor.black.cgColor
     cell.layer.borderWidth = 1
}
于 2018-08-10T05:06:04.360 に答える
0

この構成は、データソースのデリゲートメソッドではなく、カスタムセルの実装に追加する方がよいと思います 。

cell.layer.borderColor = UIColor.black.cgColor
cell.layer.borderWidth = 1
cell.layer.cornerRadius = 8 // optional
于 2020-01-03T07:42:52.700 に答える