1

グループ化されたスタイルの UITableView があります。tableView 内では、セクションの行数が可変であるため、行をセクションに配置しています。ただし、(UI 上の理由から) すべてのセクションを一緒にプッシュすることを選択したため、複数の (展開可能な) 行を持つ 1 つの大きなセクションのように見えます。

私が抱えている問題は、各セクションの上部と下部の行の選択領域がセル全体を埋めるようにしたいということです。つまり、角を丸くしないでください。

プレーンなテーブルビューではセルが完全に選択されていることはわかっていますが、グループ化されたテーブルビューからプレーンなテーブルビューに変更することはできません。他の望ましくない結果が生じるためです。

セルの selectedBackground をマスクして、角がまだ丸くなっていない場合は角を丸くする方法は理解していますが、セクションの上部と下部のセルの角を「丸める」方法を見つけることができませんでした。各セクションの一番下の行にダミーの行を作成しましたが、面倒ですが、うまくいくようです。しかし、その区切り線が太すぎるため、一番上の行にダミー行を作成することはできません。

グループ化されたUITableViewの上部/下部セクション行の選択領域を「丸め直す」ことは可能ですか?

編集して回答を追加: 次のコードは、カスタム背景ビューで機能しました。

cell.selectedBackgroundView.bounds = cell.bounds;

カスタム背景ビューによって決定されるように、各セクションの上部または下部セルの「形状」が何であれ、選択スタイルは上記のコードを使用して「形状」と一致します。これは必ずしもそれ自体で丸みを帯びた角を取り除くわけではありませんが、セクションの上部または下部のセルを「ミドルスタイル」のセル背景ビュー (角なし) に設定すると、必要に応じてセル全体が選択されます。

4

3 に答える 3

1

プロジェクトに QuartzCore フレームワークをインポートします。#あなたのtableViewControllerにインポートし、次のコードを使用してください...

>>>編集しました。

myTableView.layer.cornerRadius=0.0;

// または、tableView:cellForRowAtIndexPath: を使用します。

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

スクエアコーナーテーブルビュー

グループ化されたテーブルビューの四角いコーナーのサンプル コードとチュートリアル

うまくいけば、これはあなたを助けるでしょう...

于 2012-04-21T02:01:25.617 に答える
0

少し遅れるかもしれませんが、私がやったことは次のとおりです。

最初にセルの背景ビューを必要に応じて設定し、次にセルの選択した背景ビューを (セルの背景と同じ境界に) 設定します。

プロパティを指定できるcornerRadiusので、必要に応じて角の丸みを設定できます。私の場合、このプロパティは省略しました

両方のコードは次のとおりです。

        UIView *bg = [[UIView alloc] initWithFrame:cell.bounds];
        bg.backgroundColor = [UIColor colorWithRed:0.980 green:0.988 blue:0.984 alpha:1];
        bg.layer.borderColor = [UIColor colorWithRed:0.827 green:0.827 blue:0.835 alpha:1].CGColor;
        bg.layer.borderWidth = kCellBorderWidth;
//        bg.layer.cornerRadius= kCellBorderRadius;
        cell.backgroundView = bg;

        // to make cell selection square and not round (which is by default)
        UIView *bg_selected = [[UIView alloc] initWithFrame:cell.bounds];
        bg_selected.backgroundColor = [UIColor lightGrayColor];
        bg_selected.layer.borderColor = [UIColor colorWithRed:0.827 green:0.827 blue:0.835 alpha:1].CGColor;
        bg_selected.layer.borderWidth = kCellBorderWidth;
        cell.selectedBackgroundView = bg_selected;
于 2013-09-16T13:56:46.113 に答える
0

カスタムUITableViewCellを作成し、サブビューをクリップしないように設定し、セルの「setSelected:animated」メソッドをオーバーライドして独自の選択領域を表示できる場合があります。思いつくのはこれだけです。プレーンな UITableView を使用できないのはなぜですか?

于 2012-04-21T02:02:36.067 に答える