不幸的是,您无法检查项目在 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 子类。