2

私は最近、monotouch.dialog を使用して GetCell メソッドをオーバーライドすることにより、セルで使用可能なプロパティを取得するのに役立ちました。私の問題は、セルの周りのデフォルトの境界線を取り除くことができないことです。

セルの周りに独自の境界線を描画する方法を理解することができました (これには、セルのコア グラフィックスと .Layer プロパティを使用していると思います)。ただし、古い境界線はまだ残っており、これを無効にするプロパティが見つかりません。

理想的には、既存の境界線を自分でカスタマイズできるようにしたいのですが、それが不可能な場合 (独自のセル グラフィックを作成する必要がない場合) は、デフォルトの境界線を削除して、コードで生成された境界線を使用したいと考えています。

オーバーライド方法とこれまでのスクリーンショットについては、以下を参照してください。

public override UITableViewCell GetCell(UITableView tableView) {
    var cell = base.GetCell(tableView);
    cell.BackgroundColor = Resources.XDarkGrayColor;
    cell.TextLabel.TextColor = Resources.XWhiteColor;
    cell.Accessory = UITableViewCellAccessory.DisclosureIndicator;
    cell.Layer.ShadowColor = UIColor.Red.CGColor;
    cell.Layer.BorderColor = UIColor.Red.CGColor;
    cell.Layer.BorderWidth = 2.0f;
    cell.Layer.CornerRadius = 5.0f;
    cell.Layer.ShadowRadius = 2.0f;
    cell.Layer.ShadowOpacity = 0.75f;

    return cell;
}

これは、セルの .Layer プロパティを使用してコードで作成した赤い境界線と、赤い境界線のすぐ内側にあるセルの周りのデフォルトの境界線を示しています

4

1 に答える 1

1

IIRC (今は試すことができません) これは背景ビューで描画します。したがって、次のように削除する必要があります。

cell.BackgroundView = new UIView (RectangleF.Empty);

またはBoundsプロパティをEmpty次のように設定します。

cell.BackgroundView.Bounds = RectangleF.Empty;
于 2013-03-30T23:05:10.520 に答える