web-dev-qa-db-ja.com

UICollectionViewCellボーダー/シャドウ

IPadアプリを作成する場合、UICollectionViewCellの周囲にどのように境界線を描画できますか?

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

31
itsame69

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

#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;
}
71
James Dawson

Swift

Swift 3に更新

必要なメソッドで設定されたコレクションビュー があると仮定すると、数行のコードを書くだけで境界線を追加できます。

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 in Swift=を既にインポートしている場合、UIKitをインポートする必要はありません。
  • シャドウも追加する場合は、 this answer を参照してください。
20
Suragch

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

#import <QuartzCore/QuartzCore.h>
7
Mundi

Swift 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
}
2
Naishta