2

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 の画像を使用して、それを繰り返して画面を埋めることができます。

何か方法はありますか?

4

1 に答える 1

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

インターフェイス ビルダーを使用してビューを作成する場合は、ID インスペクターで画像ビューのクラスを設定するだけで済みます。

于 2013-05-11T15:56:59.400 に答える