2010-12-08 16 views
4

自動サイズ変更マスクを使用してコンテンツを移動する方法はありますか?グーグルは私のサブビューにUIViewAutoresizingFlexibleRightMarginという自動サイズ変更マスクを設定する必要があると私に言ってきました。 UIViewAutoresizingFlexibleWidthのように私は実際にはより意味をなさないようです。私はそれらを試しましたが、どちらも動作しませんでした。削除ボタンが表示されたときにUITableViewCellコンテンツのサイズを変更する

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

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

答えて

4

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

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

あなたのUILabelの自動サイズ変更マスクは、セルではなくcontentViewの内部でどのように動作するかを示します。

試してみるとうまくいくはずです。

+0

UIViewAutoresizingFlexibleLeftMarginが機能しませんが、UIViewAutoresizingFlexibleWidthは機能しません。 – derpoliuk

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]; 

希望を、これは、この問題つまずく他の人を助けます。

1

私はiOS 7を使用していますが、同じ問題があります。私はUITableViewCellのための別のxibを自動レイアウトを有効にして使用しているので、ラベルにもう1つの制約を追加するだけで、右側に固定されたギャップがあるようになります。

関連する問題