私は保存できる画像に基本的なUIListViewをレンダリングしたいと思います。 UIViewをイメージ(iphone/iPod Touch用)にレンダリングするためのコードがたくさん見つかりました。実際、以下のコードは他の投稿から引っ張ったもので、今使っています。問題は、メソッドが呼び出されたときに表示されないUIListViewから何も描画しないことです。iPhone UIListViewを画像にレンダリング(またはキャプチャ)
- (void)snapShotAction:(id)sender
{
CGRect screenRect = [[UIScreen mainScreen] bounds];
UIGraphicsBeginImageContext(screenRect.size);
CGContextRef ctx = UIGraphicsGetCurrentContext();
[[UIColor blackColor] set];
CGContextFillRect(ctx, screenRect);
//[self.view.layer renderInContext:ctx];
[self.myTableView.layer renderInContext:ctx];
UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(screenImage, nil, nil, nil);
}
だから私は、画像に(画面外の行を含む)を描画するために全体UIListViewを強制することができるという柔軟性が欲しいのですが、誰がそれが起こる作るためのいくつかの洞察力を持っていない場合、私は私の選択肢があると思います画像やgraphicscontextを作成し、リストのファックスを手動でレンダリングするだけです(それを行うためのサンプルコードへの参照は高く評価されます)。
私には別の考えがあります。おそらく私は別のUITableViewを使用して、下部または上部の棒(水平スペースを最大にするために)を使用してテーブル内のアイテムの数に基づいて行の高さを計算し、上記のコードを使用してキャプチャします。もちろん、テキストサイズが小さすぎて使用可能にならないうちに、リストが持つことができるアイテムの数には限界があります...
それも考えましたが、なぜそれがうまくいかないのかはあなたが正しいと思うので、私は時間を無駄にするとは思わないのです。私のリストは本質的に単なるテキスト行です(いくつかの行にイメージがあるかもしれません)。リストをイメージ・コンテキストに描画することを計画しています。リストは画面全体の高さよりも高くなる可能性があるので、アイテムの数で最大高さを分割し、配置と描画を開始する前に各行のバウンディングボックスを作成する必要があります。 – wkw