1

iOS 7 アプリを作成していて、ラベルが付いた四角形があります。ラベルは中央に配置され、ビューと同じサイズになるように作成されます (サイズを大きくするときに簡単にするため)。

目的の効果は、クリックしたときに、ラベルが常に中央に表示された状態で、ビューをフルサイズでアニメーション化することです。

私は現在試しました:

  • ラベルの上下左右の制約を 0 に設定する
  • ラベルの高さと幅を初期サイズのビューに設定し、ビュー アニメーションとともにフル サイズにアニメーション化する
  • ラベルの上と左の制約を 0 に設定し、サイズをフル サイズにアニメーション化する

これらのいずれも、目的の出力を生成しません。ビューがアニメーションを開始する前に、ラベルが最終的なサイズにスナップするように見えるたびに。

これが私のコードです:

_viewHeightConstraint.constant = self.view.frame.size.height;
_viewWidthConstraint.constant = self.view.frame.size.width;
_viewTopConstraint.constant = 0;
_viewLeftConstraint.constant = 0;

_labelWidthConstraint.constant = self.view.frame.size.width;
_labelHeightConstraint.constant = self.view.frame.size.height;
[self.view needsUpdateConstraints];

[UIView animateWithDuration:1.5f
                 animations:^(void) {
                     [self.myView layoutIfNeeded]; //perform relayout of view containing label before relayout of entire view
                     [self.view layoutIfNeeded];
                 }];

私はまだ自動レイアウトに慣れていないので、必要なものをすべて提供したかどうかはわかりません。ただし、望ましい効果は、中央のラベルが中央に配置されたまま、フル サイズにアニメーション化されるビューです。

4

2 に答える 2

0

次の制約をラベルに追加します。

(UIViewAutoresizingFlexibleLeftMargin   | 
 UIViewAutoresizingFlexibleRightMargin  | 
 UIViewAutoresizingFlexibleTopMargin    | 
 UIViewAutoresizingFlexibleBottomMargin)
于 2013-10-28T19:27:30.447 に答える