3

から を作成する方法はありUIImageますUITableViewか?

UIImage与えられた から を引き出すこのコードについて知っていますUIView:

-(UIImage*) makeImageOutOfView:(UIView*)view {

    UIGraphicsBeginImageContext(view.bounds.size);

    [view.layer renderInContext:UIGraphicsGetCurrentContext()];

    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return viewImage;
}

ただし、テーブルのフレームのサイズの画像しか作成されません。テーブルの内容全体を表示する画像を作成したいと思います。別の問題は、作成された画像がテーブルのフレームに限定されただけでなく、テーブルをスクロールした後に画像を作成すると、非常に奇妙な結果が得られたことです (画像に表示されている最初の 6 つのセルのみが表示され、それだけです)。他の可視セルは描画されませんでした..)

編集 - tableView の背景を設定して画像を表示するのではなく、tableView のコンテンツから描画された画像を作成したい..

4

3 に答える 3

4

私はあなたのためにデモを作成し、この方法でテーブルイメージをキャプチャできることを願っています:-

-(IBAction)savebutn:(id)sender
{
    [tbl reloadData];

    CGRect frame = tbl.frame;
    frame.size.height = tbl.contentSize.height;
    tbl.frame = frame;

    UIGraphicsBeginImageContext(tbl.bounds.size);
    [tbl.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *saveImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();
    NSData *imageData = UIImagePNGRepresentation(saveImage);
    NSFileManager *fileMan = [NSFileManager defaultManager];

    NSString *fileName = [NSString stringWithFormat:@"%d.png",1];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *pdfFileName = [documentsDirectory stringByAppendingPathComponent:fileName];
    [fileMan createFileAtPath:pdfFileName contents:imageData attributes:nil];



}

これはキャプチャー画像のスクリーンショットです:-

ここに画像の説明を入力

キャプチャ画像には、上から下まで表のセルがいっぱい含まれています。デモをダウンロードしてください:-

http://www.sendspace.com/file/w48sod

于 2013-01-17T10:15:04.503 に答える
0

あなたができることの1つは、を作成UIViewし、画像内で必要なすべてのセルを1つずつ追加し、最後にUIViewコードを使用してそれを画像に変換することです。

私はそれがうまくいくと思います。

于 2013-01-17T10:05:51.213 に答える
0
- (UIImage *)imageWithTableView:(UITableView *)tableView{
UIImage* image = nil;

UIGraphicsBeginImageContextWithOptions(tableView.contentSize, NO, 0.0);

CGPoint savedContentOffset = tableView.contentOffset;
CGRect savedFrame = tableView.frame;

tableView.contentOffset = CGPointZero;
tableView.frame = CGRectMake(0, 0, tableView.contentSize.width, tableView.contentSize.height);

[tableView.layer renderInContext: UIGraphicsGetCurrentContext()];
image = UIGraphicsGetImageFromCurrentImageContext();

tableView.contentOffset = savedContentOffset;
tableView.frame = savedFrame;

UIGraphicsEndImageContext();

return image;
}

ここに画像の説明を入力

于 2016-08-25T11:14:09.207 に答える