4

自動サイズ変更マスクを使用してコンテンツを移動し、削除ボタンで覆われないようにする方法はありますか? UIViewAutoresizingFlexibleRightMarginグーグルは、サブビューに自動サイズ変更マスクを設定する必要があると教えてくれました。UIViewAutoresizingFlexibleWidth実際にはもっと理にかなっているように思えます。私は両方を試しましたが、どちらも機能しません。

縮小しようとしているビューは、セルの contentView のサブビューである単なるラベルです。削除ボタンが表示されたときに contentView 自体が自動的にサイズ変更されるかどうかはわかりません。しかし、そうではないようです。それ以外の場合は、自動サイズ変更マスクが機能するはずです。

削除ボタンが存在してもビューのサイズが変更されない場合。とにかく私はこれを手動で行うことができますか?

4

3 に答える 3

4

UIViewAutoresizingFlexibleLeftMargin を使用する必要があります。

理由は次のとおりです。コンテンツを左に移動して、基本的に削除ボタンがコンテンツを左に押しているように見せたいとします。flexibleLeftMargin は基本的に、UILabel が contentView の右側に固定されたままになることを意味します。これが必要な理由は、削除ボタンが実際に contentView の幅を縮小するためです。

UILabel の autoresizingmask は、セルではなく、contentView 内での動作を参照します。

試してみてください。うまくいくはずです。

于 2011-02-03T00:01:23.827 に答える
3

この質問は本当に古いですが、自分で解決策を見つけたので、とにかく答えるべきだと思います。

セルの ContentView のみがサイズ変更され、確認ボタンが表示されます。ビュー (ラベル、イメージビューなど) をセルに直接追加するのではなく、cell.contentView に追加しない場合、contentView のサイズが変更されてもサイズは変更されません。私の場合、セルに直接追加していました。

したがって、次のようなことをする代わりに:

UILabel *nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, width-10, 20)];
[nameLabel setFont:[UIFont boldSystemFontOfSize:16]];
[nameLabel setHighlightedTextColor:[UIColor whiteColor]];
[nameLabel setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
[nameLabel setTag:101];
[cell addSubview:nameLabel];
[nameLabel release];

やったほうがいい:

UILabel *nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, width-10, 20)];
[nameLabel setFont:[UIFont boldSystemFontOfSize:16]];
[nameLabel setHighlightedTextColor:[UIColor whiteColor]];
[nameLabel setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
[nameLabel setTag:101];
[[cell contentView] addSubview:nameLabel]; // <<--- note the change in this line!
[nameLabel release];

これが、この問題に遭遇した他の人に役立つことを願っています.

于 2012-03-05T00:54:33.023 に答える