2012-01-31 14 views
0

私はビューにいくつかの画像を描画するために必死に努力してきました。ビューはスクロールビュー内にある必要があります。そのために、私はUIScrollviewをサブクラス化し、その中のdrawRectメソッドをオーバーライドします。これを私のUIViewのサブビューとして追加しました。サブクラス化UIScrollview

@interface DrawAnotherViewClass : UIScrollView<UIScrollViewDelegate> { 

} 
@end 



@implementation DrawAnotherViewClass 

- (id)initWithFrame:(CGRect)frame 
{ 
self = [super initWithFrame:frame]; 
if (self) { 
    // Initialization code 

    CGRect fullScreenRect=[[UIScreen mainScreen] applicationFrame]; 
    self.frame = fullScreenRect; 
    self.contentSize = CGSizeMake(600, 600); 
    self.showsHorizontalScrollIndicator = YES; 
    self.showsVerticalScrollIndicator = NO; 
    self.pagingEnabled = YES; 

} 
return self; 
} 



- (void)drawRect:(CGRect)rect 
{ 
// Drawing code 

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSetLineWidth(context, 2.0); 
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor); 
CGContextMoveToPoint(context, 10.0f, 50.0f); 
CGContextAddLineToPoint(context, 10.0f, 200.0f); 
CGContextStrokePath(context); 

CGContextMoveToPoint(context, 8.0f, 77.0f); 
CGContextAddLineToPoint(context, 300.0f, 77.0f); 
CGContextStrokePath(context); 

CGContextSetRGBFillColor(context, 0, 0, 255, 0.1); 
CGContextSetRGBStrokeColor(context, 0, 0, 255, 1); 
CGContextStrokeEllipseInRect(context, CGRectMake(65.0, 33.5, 25, 25)); 

UIImage *image1 = [UIImage imageNamed:@"PinDown1.png"]; 
UIImage *image2 = [UIImage imageNamed:@"pinGreen_v1.png"]; 

CGPoint drawPoint = CGPointMake(0.0f, 10.0f); 
[image2 drawAtPoint:drawPoint]; 

for(int i =1; i<20; i++){ 
    CGPoint drawPointOne = CGPointMake(40.0f * i, 40.0f); 
    [image1 drawAtPoint:drawPointOne]; 
} 
} 

ここには何かがありません。これは正しい方法ですか?

答えて

0

図面を実行するビューがそのUIScrollViewにある場合は、- (void)drawRect:(CGRect)rectメソッドをそのビューのクラスメソッドに配置し、UIScrollViewサブクラスには入れないでください。

+0

このビューをどこからスクロールビューのサブビューとして追加する必要がありますか? –

+0

ViewControllerの 'viewDidLoad'メソッドからそうすることができます。 – FelixLam

関連する問題