使用colorWithPatternImage动画UIImageView

时间:2013-05-09 12:09:39

标签: ios objective-c animation uiimageview

我有UIImageView使用以下代码进行动画处理:

    NSMutableArray *imageArray = [[NSMutableArray alloc] init];

    for(int i = 1; i < 15; i++) {
        NSString *str = [NSString stringWithFormat:@"marker_%i.png", i];
        UIImage *img = [UIImage imageNamed:str];
        if(img != nil) {
            [imageArray addObject:img];
        }

    }

    _imageContainer.animationImages = imageArray;

    _imageContainer.animationDuration = 0.5f;
    [_imageContainer startAnimating];

我现在想要的是重复图像以获得图案。有colorWithPatternImage,但这不适用于动画。

我希望整个背景充满动画图案。 而不是使用非常大的图像(960x640),我可以使用64x64的图像,并重复它以填充屏幕。

有什么办法吗?

1 个答案:

答案 0 :(得分:3)

保持代码不变,而是使用UIImageView使用我的子类:

//
//  AnimatedPatternView.h
//

#import <UIKit/UIKit.h>

@interface AnimatedPatternView : UIImageView;    
@end

//
//  AnimatedPatternView.m
//

#import "AnimatedPatternView.h"

@implementation AnimatedPatternView

-(void)setAnimationImages:(NSArray *)imageArray
{
    NSMutableArray* array = [NSMutableArray arrayWithCapacity:imageArray.count];

    for (UIImage* image in imageArray) {
        UIGraphicsBeginImageContextWithOptions(self.bounds.size, YES, 0);
        UIColor* patternColor = [UIColor colorWithPatternImage:image];
        [patternColor setFill];
        CGContextRef ctx = UIGraphicsGetCurrentContext();
        CGContextFillRect(ctx, self.bounds);
        UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        [array addObject:img];

    }
    [super setAnimationImages:array];
}

@end

如果使用界面构建器创建视图,则只需在身份检查器中设置图像视图的类。