2010-07-15 7 views
1

Я новичок в IPhone sdk.iPhone CatiledLayer pdf

Я пытаюсь разработать пользовательский PDF-файл, используя CatiledLayer, но у меня много проблем. я не могу загрузить все страницы документа в формате PDF, так что я пытаюсь сделать динамически страницы, но этот код функции вытяжки не работают:

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx 
{ 
CGContextSetRGBFillColor(ctx, 1.0, 1.0, 1.0, 1.0); 
CGContextSaveGState(ctx); 
for(int i=0; i<4;i++) 
{ 

CGContextRestoreGState(ctx); 
CGContextSaveGState(ctx); 
    CGContextFillRect(ctx, CGContextGetClipBoundingBox(ctx)); 
    CGContextTranslateCTM(ctx, -layer.bounds.size.width*((5-2*i)/12), layer.bounds.size.height); 
    CGContextScaleCTM(ctx, 1.0, -1.0); 
    CGContextConcatCTM(ctx, CGPDFPageGetDrawingTransform([[pages objectAtIndex:i] pagin], kCGPDFCropBox, layer.bounds, 0, true)); 
    CGContextDrawPDFPage(ctx, [[pages objectAtIndex:i] pagin]); 

} 
} 

эта функция печати только на последней странице.

Любая идея?

магическое число is't правильного Rigth код:

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx 
{ 



    //scrollView.scrollEnabled=NO; 
    //scrollView.alpha=0.2; 
    //[scrollView setContentOffset:scrollView.contentOffset animated:YES]; 
    CGContextSetRGBFillColor(ctx, 1.0, 1.0, 1.0, 1.0); 
    if(attua==1) 
    { 
     CGContextSaveGState(ctx); 
     CGContextFillRect(ctx, CGContextGetClipBoundingBox(ctx)); 
     CGContextTranslateCTM(ctx,layer.bounds.size.width*1/(2*[pages count]) -layer.bounds.size.width*[pages count]/(2*[pages count]), layer.bounds.size.height); 
     CGContextScaleCTM(ctx, 1.0, -1.0); 
     CGContextConcatCTM(ctx, CGPDFPageGetDrawingTransform([[pages objectAtIndex:0] pagin], kCGPDFCropBox, layer.bounds, 0, true)); 
     CGContextDrawPDFPage(ctx, [[pages objectAtIndex:0] pagin]); 

     CGContextRestoreGState(ctx); 
    } 


    for(int i=1; i<[pages count];i++) 

    {   //myContentView.frame=CGRectMake(0, 0,800*i, 1024); 


     if(i>attua-2) 
     { 
      if(i<attua+2) 
      { 


       CGContextSaveGState(ctx); 
       CGContextTranslateCTM(ctx,layer.bounds.size.width*(i*2+3/2)/(2*[pages count]) -layer.bounds.size.width*[pages count]/(2*[pages count]), layer.bounds.size.height); 
       CGContextScaleCTM(ctx, 1.0, -1.0); 
       CGContextConcatCTM(ctx, CGPDFPageGetDrawingTransform([[pages objectAtIndex:i] pagin], 0, layer.bounds, 0, true)); 
       CGContextDrawPDFPage(ctx,[[pages objectAtIndex:i] pagin]); 

       CGContextRestoreGState(ctx); 
      } 
     } 


    } 
    scrollView.scrollEnabled=YES; 







} 

Теперь вся работа !!

ответ

1

Похоже, что вы выполняете CGContextFillRect для всего контекста каждый раз вокруг цикла for, тем самым гася существующий материал (т. Е. Все, кроме последней страницы).

Я пытаюсь обернуть голову вокруг чертежа PDF в CATiledLayer. Кажется, у вас есть «магическое число», где вы переводите свою систему координат; (5-2 * я)/12. Я предполагаю, что это для выравнивания страниц рядом друг с другом. Вы уверены, что эти цифры верны?

Смежные вопросы