10

新しいUICollectionViewでは、UICollectionViewCellにシャドウを追加する方法がわかりません。どうすればいいですか。別のビューを追加しますか?

    [self.collectionView cellForItemAtIndexPath:[self.collectionView indexPathForItemAtPoint:[recognizer locationInView:[self view]]]].layer.shadowPath = [UIBezierPath bezierPathWithRect:rect].CGPath;
    [self.collectionView cellForItemAtIndexPath:[self.collectionView indexPathForItemAtPoint:[recognizer locationInView:[self view]]]].layer.shadowColor = [UIColor yellowColor].CGColor;
    [self.collectionView cellForItemAtIndexPath:[self.collectionView indexPathForItemAtPoint:[recognizer locationInView:[self view]]]].layer.shadowRadius = .5;
    [self.collectionView cellForItemAtIndexPath:[self.collectionView indexPathForItemAtPoint:[recognizer locationInView:[self view]]]].layer.shadowOpacity = .1;

ここに画像の説明を入力してください

4

5 に答える 5

42

masksToBoundsに設定するのUIViewを忘れていますNO。これは機能するはずです:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    PhotoCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"PhotoCell" forIndexPath:indexPath];

    cell.layer.masksToBounds = NO;
    cell.layer.borderColor = [UIColor whiteColor].CGColor;
    cell.layer.borderWidth = 7.0f;
    cell.layer.contentsScale = [UIScreen mainScreen].scale;
    cell.layer.shadowOpacity = 0.75f;
    cell.layer.shadowRadius = 5.0f;
    cell.layer.shadowOffset = CGSizeZero;
    cell.layer.shadowPath = [UIBezierPath bezierPathWithRect:cell.bounds].CGPath;
    cell.layer.shouldRasterize = YES;

    return cell;
}
于 2013-02-02T10:08:28.413 に答える
1

UIViewの下に影を描くにはどうすればよいですか?に対する既存の回答で問題が最もよく解決される可能性があります。

状況に固有の場合、おそらく次のコードが行うことを実行するコードがあります(関心のあるセルを指すためにcollectionViewとsomeIndexPathを取得する場所によって異なります)。

    UICollectionViewCell* collectionViewCell
      = [collectionView dequeueReusableCellWithReuseIdentifier:DEFINED_IDENTIFIER forIndexPath:someIndexPath];
    collectionViewCell.layer.shadowPath = [UIBezierPath bezierPathWithRect:collectionViewCell.bounds].CGPath;

セルを取得する方法は明らかに他にもあります。重要なのは、shadowPathを設定する2行目です。

于 2012-10-05T01:58:24.957 に答える
0

レイヤーにshadowOffsetプロパティを設定していません。

myCell.layer.shadowOffset = CGSizeMake(10,10);
于 2012-10-11T16:30:04.617 に答える