これが私の基本的な実装です。これはおそらくひどく低いパフォーマンスです (おそらく: 出力をキャッシュする代わりに、強制的にビューを再描画しますか?)
TilingView.h
@interface TilingView : UIView
@property( nonatomic, retain ) UIView* templateView;
@end
TilingView.m
@implementation TilingView
@synthesize templateView;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
- (void)drawRect:(CGRect)rect
{
int cols = 1 + self.bounds.size.width / self.templateView.bounds.size.width;
int rows = 1 + self.bounds.size.height / self.templateView.bounds.size.height;
CGContextRef context = UIGraphicsGetCurrentContext();
for( int k=0; k<rows; k++ )
for( int i=0; i<cols; i++ )
{
CGContextSaveGState(context);
CGContextTranslateCTM(context, i * self.templateView.bounds.size.width, k * self.templateView.bounds.size.height);
[self.templateView drawRect:rect];
CGContextRestoreGState(context);
}
}
@end