残念ながら、の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サブクラスで機能します。