1

次のコードをcellForItemAtIndexPathメソッドに追加することで、UICollectionViewCellにシャドウを正常に追加できます。

cell.image.layer.masksToBounds = NO;
cell.image.moviePlayerView.layer.shadowColor = [UIColor darkGrayColor].CGColor;
cell.image.moviePlayerView.self.layer.shadowOffset = CGSizeMake(0, 5);
cell.image.moviePlayerView.self.layer.shadowRadius = 2;
cell.image.moviePlayerView.layer.shadowOpacity = 0.3;

しかし、それはスクロールを本当に遅くします。スクロール時にセルに影が追加されることは理解していますが、解決策がわかりません。:/

4

1 に答える 1

0

私は解決策を見つけ、これが他の人に役立つことを願っています。影を個別に追加する代わりに、現在、既存の画像を影の画像とマージし、結果の画像を使用しています。

UIImage* image = [image imageWithFileShadow];

- (UIImage *)imageWithFileShadow {
static CGFloat pointScale = -1.0f;
if (pointScale < 0.0f) {
    pointScale = [[UIScreen mainScreen] scale];
}

CGFloat imageWidth = (int)self.size.width;
CGFloat imageHeight = (int)self.size.height;

UIImage * shadowImage = [[UIImage imageNamed:@"FileShadowResizable"] resizableImageWithCapInsets:UIEdgeInsetsMake(20.0f, 24.0f, 29.0f, 24.0f)];
UIGraphicsBeginImageContextWithOptions(self.size, NO, pointScale);
[shadowImage drawInRect:CGRectMake(0.0f, 0.0f, imageWidth, imageHeight) blendMode:kCGBlendModeNormal alpha:1.0f];
[self drawInRect:CGRectMake(14.0f, 8.0f, self.size.width - 28.0f, self.size.height - 29.0f)];

UIImage * mergedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

return mergedImage;
}
于 2013-03-14T19:04:42.857 に答える