6

私のコレクションビューのセル構造は次のように説明されています

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

のためcellItemAtIndexに、私は次のことをします

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


    // Set shadow around the cell
    [cell.layer setMasksToBounds    :NO ];
    [cell.layer setShadowColor      :[[UIColor whiteColor ] CGColor ] ];// shadow's color
    [cell.layer setShadowOpacity    :0.65 ];                            // set the opacty
    [cell.layer setShadowRadius     :5.0 ];                             // set the blur radius
    [cell.layer setShadowOffset     :CGSizeMake( 0 , 0 ) ];             // set shadow position
    [cell.layer setShouldRasterize  :YES ];                             // tell the cell to render it’s CALayer as a bitmap
    [cell.layer setShadowPath       :[[UIBezierPath bezierPathWithRect:cell.bounds ] CGPath ] ];    // use a path to draw its shadow instead of using its
    ......................................................................
}

デバイスでアプリケーションを実行すると、影が表示されます。ただし、ラベルのテキストがぼやけています。私のデバイスから撮った次の画像を見てください

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

影を落とすために使用されるボードブロックのコメントを外すと、テキストは次の画像のように非常に鮮明になります ここに画像の説明を入力してください

私は....完全に失われました。誰かがこの問題について何か考えを持っていますか?助けてください

4

2 に答える 2

8

レイヤーをラスタライズしていますが、デフォルトのラスタライズスケールは1.0です。Retinaディスプレイの場合は2.0に設定する必要があります。そうしないと、レイヤーは半分の解像度でしか表示されません。

cell.layer.rasterizationScale=[[UIScreen mainScreen] scale];
于 2012-12-31T11:00:13.563 に答える
3

setShouldRasterize、、を削除setShadowOffsetsetShadowPathます。それらがなくても問題なく動作します。

于 2012-11-09T06:00:52.160 に答える