118

そのため、シャドウを追加するための2番目のビューの追加については、すでにさまざまな投稿を行っていますが、に追加したい場合は、それでも機能させることができませんUICollectionViewCell。サブクラスUICollectionViewCell化しました。これが、セルのコンテンツビューにさまざまなUI要素を追加し、レイヤーにシャドウを追加するコードです。

[self.contentView setBackgroundColor:[UIColor whiteColor]];

self.layer.masksToBounds = NO;
self.layer.shadowOffset = CGSizeMake(0, 1);
self.layer.shadowRadius = 1.0;
self.layer.shadowColor = [UIColor blackColor].CGColor;
self.layer.shadowOpacity = 0.5;
[self.layer setShadowPath:[[UIBezierPath bezierPathWithRect:self.bounds] CGPath]];

に丸みを帯びた角と影を追加する方法を教えてUICollectionViewCellください。

4

16 に答える 16

35

スウィフト 3 バージョン:

cell.contentView.layer.cornerRadius = 10
cell.contentView.layer.borderWidth = 1.0

cell.contentView.layer.borderColor = UIColor.clear.cgColor
cell.contentView.layer.masksToBounds = true

cell.layer.shadowColor = UIColor.gray.cgColor
cell.layer.shadowOffset = CGSize(width: 0, height: 2.0)
cell.layer.shadowRadius = 2.0
cell.layer.shadowOpacity = 1.0
cell.layer.masksToBounds = false
cell.layer.shadowPath = UIBezierPath(roundedRect:cell.bounds, cornerRadius:cell.contentView.layer.cornerRadius).cgPath
于 2016-10-20T18:04:49.623 に答える
27

それが役立つ場合: 角を丸めるための迅速な方法は次のとおりです。

cell.layer.cornerRadius = 10
cell.layer.masksToBounds = true

cell はセルを制御する変数です: 多くの場合、これをoverride func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell

楽しみ!

于 2015-10-04T13:22:32.320 に答える
16

layerではなく、セルの属性を設定しますcontentView

CALayer * layer = [cell layer];
[layer setShadowOffset:CGSizeMake(0, 2)];
[layer setShadowRadius:1.0];
[layer setShadowColor:[UIColor redColor].CGColor] ;
[layer setShadowOpacity:0.5]; 
[layer setShadowPath:[[UIBezierPath bezierPathWithRect:cell.bounds] CGPath]];
于 2012-12-04T18:45:36.440 に答える
8

cornerRadius(a) を設定し、(b)shadowPathと同じ半径の丸みを帯びた四角形に設定する必要がありますcornerRadius

self.layer.cornerRadius = 10;
self.layer.shadowPath = [[UIBezierPath bezierPathWithRoundedRect:self.bounds cornerRadius:self.layer.cornerRadius] CGPath];
于 2012-12-31T18:05:40.473 に答える
0

スウィフト 5、Xcode 13、iOS 14

最初にコレクションを次のように構成します。

self.collectionView.clipsToBounds = false

次に、以下と同じようにセルを構成します。

override func awakeFromNib() {
    super.awakeFromNib()
    
    self.configView()
}
    
private func configView() {
    self.clipsToBounds = false
    self.backgroundColor = .systemBackground
    self.layer.cornerRadius = 10
    self.layer.shadowColor = UIColor.black.cgColor
    self.layer.shadowOffset = CGSize(width: 0, height: 0.0)
    self.layer.shadowRadius = 10
    self.layer.shadowOpacity = 0.2
}

これら 2 つの「clipToBounds = false」コマンドに注意してください。

それだけ。

于 2021-12-27T13:39:43.920 に答える