ios - viewDidAppear 上的动画 UIImageView 和 UITableView

标签 ios uitableview animation uiimageview

我有一个 UIViewController,我的 Logo 居中,UITableView 的 alpha 为 0。

viewDidAppear: 我有这个:

[UIView animateWithDuration:0.6 delay:0.0 options:UIViewAnimationCurveEaseInOut animations:^{
    [self.logo setFrame:CGRectMake(0.0f, self.view.frame.size.height - 194.0f, 320.0f, 194.0f)];
} completion:^(BOOL finished) {
    [self.table setFrame:CGRectMake(0.0f, 0.0f, 320.0f, self.view.frame.size.height - 194.0f)];

    [UIView animateWithDuration:0.4 delay:0.0 options:UIViewAnimationCurveEaseInOut animations:^{
        [self.table setAlpha:1.0];
    } completion:^(BOOL finished) {
        return;
    }];

    return;
}];

好的,动画就是我想要的。

但是当我调用 presentModalViewController: 显示下一个 View 时,UIImageView 回到屏幕中心,UITableView 回到之前的高度。

如何在完成动画后保持相同的大小和位置,甚至改变 View ?

谢谢。

最佳答案

我假设您在 viewDidLoad 中设置了原始帧,这很好,除非模态清除了您的系统内存。 View 会尽可能长时间地缓存。因此,如果您的模式使用了足够的内存来重置它,viewDidLoad 将再次调用以重置您的 View 。

处理此问题的一种快速简便的方法是在 dismissViewController:animated: 方法中设置您想要的值(如果您正在使用它),或者为模态设置一个委托(delegate)方法。

如果您没有其中任何一个,则需要以某种方式检查这是否是第一次加载。但这不是处理它的干净方法。如果您展示更多代码,我们可能会找到更好的解决方案。

关于ios - viewDidAppear 上的动画 UIImageView 和 UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13935322/

相关文章:

iphone - UITableView 中打开 Safari 的可点击链接

swift - 在向上和向下平移时使用多次旋转为 UIView 设置动画

android - flutter ,云火存储查询方法,其中无法正常工作

uitableview - 如何禁用默认的 tvOS 焦点动画?

c# - 在 MonoTouch 中的 View Controller (缓存数据)之间传递数据的最佳方式

ios - [tableView 重新加载数据];在我滚动 tableView 之前不起作用

javascript - 如何在 javascript 中使用对象的单个实例?

android - SurfaceView/CanvasView 一般问题

ios - Phonegap-iOS 防止 iCloud 上的文档文件夹备份

ios - 如何使用搜索 Controller 更新我的表 Controller 过滤?