2014-02-21 106 views
0

我想導出一個tableview作爲圖像。我想要控制該圖像的大小。從UITableView縮放UIImageView

問題是,圖像是作爲 大的tableview的框架,這在我的情況iPhone是320x480(或 其他一些高度)。我希望它變得更大。其實我想在導出的圖像的大小上有控制 。例如,我不想導出圖像 320x480。我需要某種比例因子。例如,我想用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

嗯,我看,10倍的解釋 – stellz