0

テーブルビューがあり、そのコンテンツを動的にリロードしています。テーブルのコンテンツをリロードするために、次のコードを使用しています。

[agendaTable reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];

これは正常に機能しますが、問題は、テーブルセルのアルファプロパティを次のように設定していることです。

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {


    if([cell isKindOfClass:[AgendaItemBlank class]])
        cell.backgroundColor = [UIColor clearColor];

    else if([cell isKindOfClass:[AgendaItem class]])
    {
        cell.backgroundColor = [UIColor whiteColor];

        [cell setAlpha:0.82];

        //set the corner radius so that there is a rounded effect
        [cell.layer setBorderWidth:0.5];
        [cell.layer setCornerRadius:9.0];
        [cell.layer setBorderColor:[UIColor redColor].CGColor];
        [cell.layer setMasksToBounds:YES];

        //set a different color for the selected background
        UIView *bgColorView = [[UIView alloc] init];
        [bgColorView setBackgroundColor:[UIColor redColor]];
        [bgColorView.layer setCornerRadius:9.0];
        [cell setSelectedBackgroundView:bgColorView];
        [bgColorView release];
    }
}

これらの組み合わせにより、リロード後、テーブルセルが最初に不透明になり、すべてのプロパティが有効になりますが、alphaプロパティは有効になりません。

セルは、上下にスクロールすると(基本的には再描画されると)、アルファプロパティを回復します。

内でアルファを設定しようとしました- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPathが、効果はありません。

4

2 に答える 2

0

セルの背景を設定するには、中間UIViewオブジェクトを使用します。

UIView* cellBackView = [[UIView alloc] initWithFrame:CGRectZero];
cellBackView.backgroundColor = [UIColor redColor];
cellBackView.alpha = 0.82;
cell.backgroundView = cellBackView;
于 2012-05-07T18:00:49.793 に答える
0

試す

[cell setBackgroundColor:[UIColor colorWithRed:1 green:0 blue:0 alpha:0.82]];
[cell.textLabel setBackgroundColor:[UIColor clearColor]];
于 2012-05-07T18:07:04.840 に答える