web-dev-qa-db-ja.com

グループ化されたスタイルのUITableViewのセクションからセルの境界線を削除する

グループ化されたスタイルで初期化され、複数のセクションを持つUITableViewControllerがあります。これらのセクションの1つについては、その構成セルが完全に透明で、境界線がないことを望みます。このセクションのすべての行にカスタムビューを割り当てる予定ですが、グループ化されたテーブルセルに囲まれたカスタムビューがあると悪いようです:(

以下は、セルの背景色を透明ではなく黒にします...そして、まだ境界線を取り除く方法がわかりません。

cell.backgroundColor = [UIColor clearColor];

ポインタはありますか?ありがとう!

64
Tim

注:これはiOS7以降では動作していないようです。 iOS7の場合は、 this answerを試してください。

IOS6以前の場合、グループ化されたテーブルビューセルのセルからグループ化された背景を削除するには:

これは機能しませんでした

cell.backgroundView = nil; // Did Not Work

これでした

cell.backgroundView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];

ARCに移動した場合(この作品を聞いたことがありますが、テストしていません)

cell.backgroundView = [UIView new];
159
Intentss

実際に設定する必要があります

tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

セルの境界線を削除します。

39
Chintan Patel

次のハックは、現時点ではiOS 7で機能します。 :)

UITableViewCellをサブクラス化し、セパレーターを使用しないセクションにこのセルを使用します。
セルサブクラスのaddSubviewメソッドをオーバーライドします。

-(void)addSubview:(UIView *)view
{
    // The separator has a height of 0.5pt on a retina display and 1pt on non-retina.
    // Prevent subviews with this height from being added. 
    if (CGRectGetHeight(view.frame)*[UIScreen mainScreen].scale == 1)
    {
        return;
    }

    [super addSubview:view];
}
37
Andreas Ley

これは、グループ化されたスタイルテーブルを持つために働いたものです

[tableView setSeparatorColor:[UIColor clearColor]];

24
Fede Mika

このコードは私のために働いた:)

[self.tableView setSeparatorColor:[UIColor clearColor]];
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
19
Nicolò Ciraci

セルのbackgroundViewをnilに設定します。グループ化されたテーブルの場合、セル画像はそのビューの一部です。

2
user511132
cell.backgroundColor = [UIColor clearColor];

cell.backgroundView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
1

IOS 8以降、セパレーター属性をnoneに設定しても同様に機能します。

Get rid of cell border

1
prabhu

tableView.separatorColor = [UIColor clearColor];を使用してみてください

また、tableView.separatorStyle = UITableViewCellSeparatorStyleNone;を使用しないでください

私は両方でテストしました。スタイルがなしの場合、セクションの境界線を非表示にすることは機能しませんが、代わりに色を変更するだけで、セクションの境界線はなしに見えます。

iOSは、オブジェクトを何も作成せず、オブジェクトを透明にすることを差別化しているようです

1
petershine
cell.backgroundView = [UIView new];

チャームのように機能します!テスト済み! iOS6

1
Ricardo Funk

コンテンツビューを設定すると、境界線も削除されます。カスタムビューをcell.contentViewに設定します。

0
BTRUE

コメントを@Intentssに変換して答えにしたいと思ったのです。彼のソリューションを使用することで、それらに役立つかもしれないからです。

ARCを使用してグループ化されたUITabelViewでiOS6.1を使用

[tableView setSeparatorColor:[UIColor clearColor]];

動作しない

cell.backgroundView = [[UIView alloc] initWithFrame:CGRectZero];

動作します

0
 UIView *backView = [[UIView alloc] initWithFrame:CGRectZero];
 backView.backgroundColor = [UIColor clearColor];
 cell.backgroundView = backView;
 cell.backgroundColor = [UIColor clearColor];
 [cell.contentView addSubview:imageView];
0
user1635181

グループ化されたスタイルのUITableViewのセクションからセルの境界線を削除する最も簡単な方法:

[tableViewOutlet setBackgroundView:nil];

viewDidLoadメソッドで。

0
Kevin Zych

カスタムUITableCellViewがある場合、次のメソッドをビューに追加して背景ビューを削除できます。

- (void)setBackgroundView:(UIView *)backgroundView
{
    // We don't want background views for this cell.
    [super setBackgroundView:nil];
}
0
Kostub Deshmukh