2

私は今、この問題に何週間も苦労しています。とにかく、CALayer はひどいです。それらは非常に多くの遅延を引き起こし、UI の見栄えをさらに悪くします。

ほとんどの場合、効率を最大限に高めた単純な UITableView があり、スクロール時のすべての遅延は 3 行のコードから発生します。

CALayer *imageLayer2 = [cell.imageView layer];
[imageLayer2 setMasksToBounds:YES];
[imageLayer2 setCornerRadius:10.0];

setMaskToBounds を NO に設定しようとしましたが、丸い角が UIImageView に適用されません。この問題は、何らかの奇妙な理由で iPhone よりも iPad で悪化しているようですが、今のところ回避策を見つけることに固執するだけです。また、このコードは cellForRowAtIndexPath にありますが、新しいセルが必要な場合にのみ実行されるため、常に呼び出されるとは限りません。

とにかく、この遅延を取り除くために CALayers を使用する代わりに何をすることをお勧めしますか?

ありがとう!

4

3 に答える 3

1

I think the problem here is because you are doing this every time the cellForRowAtIndex is called. What I would advise, is store the image already with the mask and the corner radius, when you actually need then again, you ask the model to retrieve the image and not calculate it again. The cellForRowAtIndex, is a sensible spot, and you should avoid doing expensive operations in it.

于 2012-06-04T12:41:58.530 に答える
1

UIImage の CGImageRef を使用すると、UIImage を直接使用するよりもはるかに高速であることがわかりました。

これを試して:

CALayer *imageLayer2.contents = (id)[cell.imageView image].CGImage;
[imageLayer2 setMasksToBounds:YES];
[imageLayer2 setCornerRadius:10.0];

私は実際には ImageView を完全に取り除き、CALayers と UIImages だけを扱います (アクセシビリティを気にしないと仮定して)

于 2013-03-19T03:40:59.233 に答える
0

画像自体をいじりたい場合は、四角形を丸めてそのまま使用できます。長方形の画像を四角形の画像に更新するには、この回答を確認してください 。正方形の画像を画像にマスクする方法iPhone SDK の角を丸くしますか?

于 2012-06-03T19:57:30.433 に答える