繁体   English   中英

iPhone动画定时/渲染错误?

Possible iphone animation timing/rendering bug?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我一直在研究iPhone应用程序几周了。 现在,我遇到一个动画问题,无法解决。 也许你可以帮忙。 这是详细信息(有点长,请耐心等待):

基本上,我要实现的效果是,当用户单击按钮时,将弹出一个加载视图,将整个屏幕隐藏起来。 然后这些应用会进行大量繁重的计算,这需要几秒钟的时间。 计算完成后,将在加载视图下呈现soem结果视图(类似于棋盘上的棋盘)。 渲染所有结果视图后,我使用动画动画删除了加载视图n,并向用户显示结果视图。 这是我的工作:

  1. 当用户单击按钮时,运行以下代码:

    [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; [UIView setAnimationBeginsFromCurrentState:YES]; [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.view缓存:是]; [UIView setAnimationDelegate:self]; [UIView setAnimationDidStopSelector:@selector(loadingViewInserted:finished:context :)]; //使用非常高的索引号,因此它将始终位于顶部[self.view insertSubview:loadingViewController.view atIndex:1000];

     [UIView commitAnimations]; 
  2. 在“ loadingViewInserted”函数中,它调用另一个执行繁重计算工作的函数。

  3. 一旦计算完成,许多结果视图(例如棋盘上的棋盘)将呈现在加载视图下。

     for(int colIndex = 1; colIndex <= result.columns; colIndex++) { for(int rowIndex = 1; rowIndex <= result.rows; rowIndex++) { ResultView *rv = [ResultView resultViewWithData:results[colIndex][rowIndex]]; [self.view addSubview:rv]; } } 
  4. 添加所有结果视图后,将调用以下动画来删除加载视图:

     [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; [UIView setAnimationBeginsFromCurrentState:YES]; [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES]; [loadingViewController.view removeFromSuperview]; [UIView commitAnimations]; 

通过这样做,大部分时间(也许是90%)都能满足我的要求。 但是,有时我看到一些奇怪的结果:加载视图首先按预期方式显示,然后消失,然后一些结果视图(假定位于加载视图下)突然出现在加载视图的顶部; 其中一些是部分渲染的。 然后加载视图缩小,一切看起来又正常了。 奇怪的情况只持续了不到一秒钟,但已经很糟糕了,无法搞定用户界面。

我尝试了各种不同的方法来解决此问题(使用另一个线程来删除加载视图,使加载视图不透明),但是它们都不起作用。 唯一能改善一点的是,我先隐藏所有结果视图。 最后一个动画结束后,在其回叫中,取消隐藏所有结果视图。 但这失去了很好的效果,即在缩小加载视图时,结果已经存在。

在这一点上,我真的认为这是iphone(我使用OS 3.0进行编译)操作系统中的错误。 或者,也许您可​​以指出我做错了(或做不同的事情)。

(感谢您完成这篇较长的帖子,:-))

1 个回复

AddSubview应该将子视图添加到其对等视图的顶部。 您可能需要insertSubview:belowSubview:

我猜它有时会“起作用”,因为由于CPU争用,计算使动画停滞了。

2 iOS 14 Safari 动画计时功能错误

更新到 iOS 14 后,我在 safari 中使用动画计时功能出现错误。 在 iOS 14 之前,animation-timing-function 用于控制属性(如 top、left、opacity)的速度。 但现在似乎可以控制时机了。 以下是示例: .div{ animation: ...

3 iPhone:可以渲染不同的视图吗?

我有一个问题,我无法正确解决。 简而言之:我想从多个子视图中创建一个视图(例如:UIImageView),即它由多个ImageViews和TextViews组成。 问题是,我想将它们“渲染”成一个视图。 说,我拍张照片,在下面添加一些说明,在上面添加标题,并在底部添加另一个小图像。 ...

4 如何在iPhone的动画中使用计时功能?

我想使用计时功能,可以说kCAMediaTimingFunctionEaseInEaseOut 我的目标是我有起点(X1,Y1)和终点(X2,Y2),我想要一个缓动函数,它将在该点范围内提供缓动功能。 就像改变(X,Y)范围并给我从头到尾的曲线一样。 如何在iPhone中做到这一点 ...

5 Chrome渲染错误,Slick.js,Flash动画

Chrome(版本39.0.2171.95 dev-m)中出现以下显示问题。已在多台Windows PC和Mac上发现了该问题。 似乎有两个原因可以导致此,使用Slick.js的幻灯片组件和Flash动画。 我更新了Slick.js无济于事。 无论组件位于何处,内容显示都将在同一位 ...

7 CSS动画转换翻译iPhone 4s上的错误?

在我目前的网站上,我在使用旧的iphone 4s( www.felixvoigt.de )检查它们时遇到了css动画问题。 在我的Macbook Pro上的firefox,chrome,safari,opera上,maxos 10.13.6看起来都不错。 但是在我的iPhone 4s,ios 9.3 ...

9 是否可以在iPhone上为动画设置标签或ID?

我有一个隐式动画,如下所示: 当此动画开始和结束时,它将触发以下委托函数: 我的viewController中有很多东西会变得生动起来,并且委托函数也越来越复杂。 如何标记特定动画,以便可以检查其在委托函数中的哪个动画? 对我来说,这两个函数之一的参数是字符串,而另一个是 ...

10 Redux,渲染信息的时机

我正在尝试在组件中使用来自我的 redux 存储的信息,我需要更好地了解接收信息的时间。 我有以下带有 mapStateToProps 调用的导航组件,我希望将个人资料图片链接加载到标题中...例如 Facebook 或许多用户登录的网站。 当组件加载时,我收到一条错误消息“无法读取未定义的属性 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM