iPadアプリを作成する場合、UICollectionViewCellの周囲に境界線を描画するにはどうすればよいですか?
詳細:UICollectionViewCellを拡張するクラスProductCellを実装しました。ここで、境界線や影など、いくつかの凝った詳細を割り当てたいと思います。ただし、ここでこのようなものを使用しようとすると、Xcodeはレシーバータイプ「CALayer」が前方宣言であると通知します。
iPadアプリを作成する場合、UICollectionViewCellの周囲に境界線を描画するにはどうすればよいですか?
詳細:UICollectionViewCellを拡張するクラスProductCellを実装しました。ここで、境界線や影など、いくつかの凝った詳細を割り当てたいと思います。ただし、ここでこのようなものを使用しようとすると、Xcodeはレシーバータイプ「CALayer」が前方宣言であると通知します。
もう少し実装するために:
#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;
}
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
。QuartzCore
フレームワークをインクルードし、ヘッダーをクラスにインポートする必要があります。
#import <QuartzCore/QuartzCore.h>
スウィフト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
}
この構成は、データソースのデリゲートメソッドではなく、カスタムセルの実装に追加する方がよいと思います 。
cell.layer.borderColor = UIColor.black.cgColor
cell.layer.borderWidth = 1
cell.layer.cornerRadius = 8 // optional