0

テーブルビュー セルの角を丸くして、それらの間のギャップを大きくしたいと思います。

私はこのように cellForRowAtIndexPath でそれを行います:

static NSString* CellIdentifier = @"normal";
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

if(cell == nil)
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

CALayer* layer = cell.layer;
[layer setCornerRadius:8.0f];
[layer setMasksToBounds:YES];
[layer setBorderWidth:2.0f];

setBorderWidth を呼び出すと、tableview のスクロールが非常に遅くなります。それがなければ、それは魅力のように機能します。

では、どうすればセルの角を丸め、境界線の幅をより速く設定できますか?

4

2 に答える 2

1

私はそれを速く働かせるために何度も試みました。しかし、多くのオブジェクトに使用すると、動作が非常に遅くなります。

何をお勧めしますか:

レイヤーのプロパティではなく、背景画像を使用します。たとえば、ここを見てください

または tableView スタイルを使用するには -UITableViewStyleGrouped

あなたの場合、テーブルビューに大量のオブジェクトではない可能性があるため、セルを作成するときに境界線を設定して最適化します。

if(cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

CALayer* layer = cell.layer;
[layer setCornerRadius:8.0f];
[layer setMasksToBounds:YES];
[layer setBorderWidth:2.0f];
}
于 2013-03-24T22:05:29.867 に答える
0

レイヤーのプロパティを毎回設定する代わりに、セルが作成されたときに一度だけ設定してください。

cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if(cell == nil)
{
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

CALayer* layer = cell.layer;
[layer setCornerRadius:8.0f];
[layer setMasksToBounds:YES];
[layer setBorderWidth:2.0f];
}
于 2013-03-24T22:31:07.997 に答える