2014-06-23 2 views
0

У меня есть первый вид firstView, а также нарисовать второй вид secondView и добавить его в качестве подзаголовка в firstView. Также у меня есть метод, который создает из firstView PDF файла:Рисование PDF с двух видов

-(void)createPDFfromUIView:(UIView*)firstView 
{ 

    NSMutableData *pdfData = [NSMutableData data]; 

    UIGraphicsBeginPDFContextToData(pdfData, self.view.bounds, nil); 
    UIGraphicsBeginPDFPage(); 
    CGContextRef pdfContext = UIGraphicsGetCurrentContext(); 


    [firstView.layer drawInContext:pdfContext]; 

    UIGraphicsEndPDFContext(); 

    NSArray* documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES); 

    NSString* documentDirectory = [documentDirectories objectAtIndex:0]; 
    NSString* documentDirectoryFilename = [documentDirectory stringByAppendingPathComponent:@"resolution.pdf"]; 

    [pdfData writeToFile:documentDirectoryFilename atomically:YES]; 
    NSLog(@"documentDirectoryFileName: %@",documentDirectoryFilename); 
} 

Как я могу сделать один PDF из этих двух точек зрения, поэтому файл PDF должен включать в себя одну страницу FirstView и secondView

Добавлено

в ViewController в loadView метод

 AWFirstView *firstView = [[AWFirstView alloc] init]; 
    self.view = firstView; 

    self.secondView = [[AWSecondtView alloc] initWithFrame:CGRectMake(0, 50, 300., 300.)]; 
    [self.secondView setBackgroundColor:[UIColor clearColor]]; 

    self.createPDFButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    self.createPDFButton.frame =CGRectMake(0, 0, 88., 50.); 
    [self.createPDFButton setBackgroundColor:[UIColor whiteColor]]; 
    [self.createPDFButton addTarget:self action:@selector(createPDF) forControlEvents:UIControlEventTouchUpInside]; 
    [self updateView]; 
    [self.view addSubview:self.drawWindow]; 
    [self.view addSubview:self.createPDFButton]; 

В updateView это что-то вроде этого:

-(void)updateView 
{ 
    if(![self isViewLoaded]) 
     return; 

    [[AWServices services].uiContext updateObjectInCurrentContext:&_resolution]; 


    AWFirstView *view = (AWFirstView *)self.view; 
    view.post = _resolution.contact.officialPersonPost; 
    view.name = _resolution.contact.officialPersonFullname; 

    [view.superview setNeedsDisplay]; 

В

-(void)createPDF{ 
[self createPDFfromUIView:self.view]; 

}

ответ

0

Ну, я добавил

[self.secondView.layer drawInContext:pdfContext]; 

в -(void)createPDFfromUIView, и она работала. Но это правильное решение?

0

Попробуйте это:

UIGraphicsBeginPDFContextToData(pdfData, firstView.bounds, nil); 
UIGraphicsBeginPDFPage(); 
CGContextRef pdfContext = UIGraphicsGetCurrentContext(); 

[firstView.layer drawInContext:pdfContext]; 

Обратите внимание, что я теперь отправка drawInContext: к firstView, в отличие до myView, как вы делали. Если в метод передается firstView, то это должно дать ожидаемый результат.

EDIT: вы не добавляете secondView в качестве подсмотра; делать, как это (третья строка):

self.secondView = [[AWSecondtView alloc] initWithFrame:CGRectMake(0, 50, 300., 300.)]; 
[self.secondView setBackgroundColor:[UIColor clearColor]]; 
[self.firstView addSubview:self.secondView]; 

Кроме того, что назначение вы делаете, чтобы self.view не очень хорошо выглядеть:

self.view = firstView; 

Либо вы делаете:

[self.view addSubview:self.firstView]; 

или определите loadView на вашем контроллере и назначьте его self.view.

+0

он сохраняет только firstView – dav

+0

, если secondView является подпунктом firstView, он также должен быть сохранен в том же PDF-файле. можете ли вы показать, как вы создаете firstView, secondView и как вы делаете последнее подвид первого? – sergio

+0

добавлен еще код – dav

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