0

オブジェクト ライブラリからシーンに UIImageView を配置し、.h ファイルでイメージと定義された OUTLET を指定します。ここで、その座標、または中心点、またはフレーム X、Y、幅、高さを確認したいと思います。私はこれを使用しています

CGRect newFrameSize = CGRectMake(recycleBin.frame.origin.x, recycleBin.frame.origin.y,
recycleBin.frame.size.width, recycleBin.frame.size.height);

また

CGRect newFrameSize = recycleBin.frame;

これを使うことで

NSLog(@"%@", NSStringFromCGRect(newFrameSize));

同じ結果が得られます

2013-01-16 21:42:25.101 xyzapp[6474:c07] {{0, 0}, {0, 0}}

ビューコントローラーがロードされたときの実際の位置とサイズが必要なので、ユーザーが画像ビューをクリックすると、ユーザーに向かってズームインしてフェードアウトし、ユーザーがリセットボタンをタップすると、フェードインして元のフォームにズームインします(前のアニメーションに戻ります)。また、UIImageViewまたは任意のボタンまたはラベルでこのアニメーションを実行する方法のヒントを教えてください。どうも

4

2 に答える 2

1

残念ながら、のIBで設定されているアイテムの実際のフレームを確認することはできません-viewDidLoad。(私が見つけた)最も早くチェックできるのは、をオーバーライドすること-viewDidAppear:です。ただし、-viewDidAppear:ビューの存続期間中に何度も呼び出される可能性があるため、変更された状態のフレームを保存していないことを確認する必要があります。

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    if(savedFrame == CGRectZero) {
        savedFrame = self.recycleBin.frame;
        NSLog(@"Frame: %@", NSStringFromCGRect(savedFrame));
    }
}

savedFrameメンバー変数はどこにありますか(またはプロパティにすることもできます)。

必要なアニメーションの説明から、フレームを調整することはそれを実行する方法ではないように聞こえます。ビューのストレッチとフェードアウト(およびリセット時はその逆)の効果を取得したいようですか?もしそうなら、このようないくつかのコードはあなたが探しているものよりもそうかもしれません...

フェードアウト:

float animationDuration = 2.0f; // Duration of animation in seconds
float zoomScale = 3.0f; // How much to zoom in duration the animation
[UIView animateWithDuration:animationDuration animations:^{
    CGAffineTransform transform = CGAffineTransformMakeScale(zoomScale, zoomScale);
    self.recycleBin.transform = transform;
    self.recycleBin.alpha = 0; // Make fully transparent
}];

次に、ビューをリセットするには:

float animationDuration = 2.0f; // Duration of animation in seconds
[UIView animateWithDuration:animationDuration animations:^{
    CGAffineTransform transform = CGAffineTransformMakeScale(1.0f, 1.0f);
    self.recycleBin.transform = transform;
    self.recycleBin.alpha = 1.0; // Make fully opaque
}];

数字をいじって、希望する効果が得られるかどうかを確認できます。iOSのほとんどのアニメーションは、実際には非常に簡単に実行できます。このコードは、すべてのUIViewサブクラスで機能します。

于 2013-01-16T18:14:43.090 に答える
0

IBOutlet がクラスにアタッチされていないように聞こえます。

ビュー コントローラーのヘッダー ファイルを開き (そこにプロパティ宣言がある場合)、宣言の横を確認します。

ここに画像の説明を入力

最初の IBOutlet で、円 (行番号の左側) が塗りつぶされていることに注意してください。これは、シーンに接続されていることを意味します。ただし、2つ目はそうではありません(丸は塗りつぶされていません)。

于 2013-01-16T18:01:46.823 に答える