1

アクセサリ ビューをセルに収める方法がわかりません。また、サブビューを追加すると、追加された最初のサブビューの右側に追加されます。サブビューを右から左に追加したい。

アクセサリービュー用にこれを持っています

UIView *myAccessoryView = [[UIView alloc] initWithFrame:cell.accessoryView.frame];

そして、サブビューを追加するたびに、これを書くだけです

[myAccessoryView addSubview:greenCircle];

そして、別のサブビューを追加するとすぐに、以前のサブビューの右側に配置され、セルからさらに離れています。サブビューを追加する方法を逆にするにはどうすればよいですか? セルにとどまるようにアクセサリ ビューをフォーマットするにはどうすればよいですか?

4

1 に答える 1

1

まだ存在しないaccessoryViewのフレームでmyAccessoryViewを初期化しようとしています。cell.accessoryType プロパティを指定するか、accessoryView を自分で作成して設定すると、セルの作成 (および tableView への追加) 後に作成されます。

[cell setAccessoryView:myAccessoryView];

したがって、これを行う場合:

UIView *myAccessoryView = [[UIView alloc] initWithFrame:cell.accessoryView.frame];
[cell setAccessoryView:myAccessoryView];

サイズと座標がゼロのaccessoryViewがあります。セルが tableView に設定された後、accessoryView はセルの右側に標準の原点を取得します。しかし、まだサイズがゼロです。そして、accessoryView に追加するすべてのサブビューは、その原点に設定されます。

メソッド「addSubview」はサブビュー フレームを変更できません。ビューを別のビューに配置するだけです。新しいサブビューが前のサブビューの右側に配置される理由がわかりません。サブビューを適切な場所に配置するには、フレームを手動で設定する必要があります。例えば:

UIView *greenCircle = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
[myAccessoryView addSubview:greenCircle];

それが役立つことを願っています。

于 2012-09-07T08:06:08.917 に答える