2014-02-21 3 views
0

테이블 뷰를 이미지로 내보내려고합니다. 그 이미지의 크기를 제어하고 싶습니다.UITableView에서 확장 된 UIImageView

문제는 이미지가으로 테이블 뷰의 프레임 크기가 크다는 것입니다. 내 경우에는 iPhone에서 320x480 (또는 다른 높이)입니다. 나는 그것을 더 크게하고 싶다. 실제로 내 보낸 이미지의 크기를 제어하려면 이 필요합니다. 예를 들어 이미지 320x480을 내보내고 싶지 않습니다. 나는 일종의 규모 요인이 필요합니다. 예를 들어, 2 배 더 많은 픽셀을 가진 2 개의 배 더 큰 이미지를 갖고 싶습니다 ... 나는 그것을 잘 설명하기를 바랍니다. 다음은 이미지 생성에 사용하는 코드입니다.

- (UIImageView*)renderTableViewAsImageView { 

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; 
    [self.tableView cellForRowAtIndexPath:indexPath].hidden = YES; 
    self.invoiceExportTitle.textColor = [UIColor blackColor]; 

    CGFloat scaleFactor = 1.0; 
    CGSize pageSize = CGSizeMake(self.tableView.contentSize.width*scaleFactor, self.tableView.contentSize.height*scaleFactor); 

    UIGraphicsBeginImageContext(pageSize); 

    [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:NO]; 
    [self.tableView.layer renderInContext:UIGraphicsGetCurrentContext()]; 

    NSInteger rows = [self.tableView numberOfRowsInSection:0]; 
    NSInteger numberOfRowsInView = 4; 
    for (int i=0; i<rows/numberOfRowsInView; i++) { 
     [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:(i+1)*numberOfRowsInView inSection:0] 
           atScrollPosition:UITableViewScrollPositionTop 
             animated:NO]; 
     [self.tableView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    } 

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 

    UIGraphicsEndImageContext(); 

    [self.tableView cellForRowAtIndexPath:indexPath].hidden = NO; 
    self.invoiceExportTitle.textColor = [UIColor clearColor]; 
    [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO]; 

    return imageView; 
} 
+0

그냥 UIImage 크기를 조정하려면 작동합니까? 예 : http://stackoverflow.com/questions/2658738/the-simplest-way-to-resize-an-uiimage –

답변

0

당신이있는 UIImage있을 때, 당신은 당신의 그래픽 맥락에서

[image drawInRect:CGRectMake(0,0,width, height)];

로 축소 버전에 그릴 수 있습니다. 물론 픽셀이 보간되지만 기본 이미지는 320x480이므로 품질은 그대로 유지됩니다.

+0

실제로 기본 이미지에 더 많은 품질이 필요합니다. . 생성 된 이미지의 크기를 조정하고 싶지는 않지만 원래 더 큰 이미지를 생성하고 싶습니다. – stellz

+0

그건 불가능합니다. 당신이하는 일은 화면 내용을 이미지에 그려 넣는 것 뿐이며 화면 해상도 만 가질 수 있습니다. 더 높은 품질을 원하면 벡터 기반 배열에서 모든 그려진 객체를 직접 정의하고 이러한 객체를 이미지에 그려야합니다. – TheEye

+0

흠, 설명을 위해 10x가 표시됩니다. – stellz

관련 문제