如何在 UIView 内设置动画?
Posted
技术标签:
【中文标题】如何在 UIView 内设置动画?【英文标题】:How to animate inside UIView? 【发布时间】:2010-12-29 10:24:00 【问题描述】:我有我的自定义 UIView,里面有一个二维数组。该数组包含我使用 drawRect 方法在自定义 UIView 上绘制的像素。
现在我想用 100 步(或只用结果数组)更改这个像素(我的 2-dim 数组)。如何使这种效果动画化?显示以前的状态然后显示实际状态是没有问题的,但是我需要在这些状态之间进行动画。
感谢您的帮助。
最好的问候, 沃伊泰克
[更新,同一天,14:15]
目前我是通过以下方式完成的:
- (void)calculate:(NSTimer *)timer
int result = [myView calc];
if(result > 0)
[NSTimer scheduledTimerWithTimeInterval:0.00001f
target:self selector:@selector(calculate:)
userInfo:nil
repeats:NO];
[myView setNeedsDisplay];
但它不是那么好,因为刷新使它很慢。如果我每 2-4 次计算刷新一次,我的动画就会不流畅。
我的画法:
- (void)drawRect:(CGRect)rect
int i = 0, j = 0;
CGContextRef myContext = UIGraphicsGetCurrentContext();
// ****************** drawing ********************
for(i = 0; i < 768; i++)
for(j = 0; j < 768; j++)
if(board[i][j] == 1)
CGContextSetRGBFillColor (myContext, 1, 0, 0, 1);
CGContextFillRect (myContext, CGRectMake (i, j, 1, 1));
else
CGContextSetRGBFillColor (myContext, 0, 0, 1, 1);
CGContextFillRect (myContext, CGRectMake (i, j, 1, 1));
【问题讨论】:
【参考方案1】:使用填充矩形一次绘制一个像素需要一些时间。
我建议你设置一个内存区域作为你要绘制的图像,然后使用 CGImageCreate 创建一个你可以在 UIView 中绘制的图像。
例如使用见
http://www.iphonedevsdk.com/forum/iphone-sdk-development/23525-cgimagecreate-alpha.html
http://iphonedevelopment.blogspot.com/2009/04/creating-uiimages-from-tga-data.html
【讨论】:
以上是关于如何在 UIView 内设置动画?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Objective C 中为浮动 UIView 设置动画
如何在 UINavigationController 的视图下为 UIView 设置动画