从UITableView缩放UIImageView

时间:2014-02-21 14:45:54

标签: ios iphone objective-c uitableview uiimageview

我正在尝试将tableview导出为图像。我想控制那张图片的大小。

问题是图像是 作为tableview的框架,在我的情况下在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;
}

1 个答案:

答案 0 :(得分:0)

当您拥有UIImage时,可以使用

的缩放版本绘制它

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

在图形上下文中。当然,像素将被插值,但你的基本图像只有320x480,因此质量将保持不变。