如何在 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 设置动画

如何在 Swift 中多次为 UIView 的翻转设置动画

如何在 iOS 中为两个 UIView 翻转设置动画?

如何使用 ViewWillLayoutSubview 为 UIView 框架设置动画

如何在代码中调用 UIView 动画