私は修正できないような問題があります。私はUIScrollView(オフスクリーンのコンテンツを含む)のスクリーンショットを撮ろうとしていますが、ビューが長い場合、renderInContextはスクロールビューのすべてのコンテンツを取得しません。生成されたイメージのサイズは正確ですが、レンダリングされたデータにはディスプレイのチャンクがないように見え、チャンクがあるはずの空白が残ります。失われたブロックは、私が "scaleToFit"に設定されていると思うUIWebViewのコンテンツからです。これは毎回起こるわけではなく、UIWebViewの高さがかなり高い場合にのみ発生するようです。私は、UIWebViewのスケーリングに関係していると思います。iOSデバイスでスクリーンショットを撮るときに、データの欠落した「ブロック」を修正するにはどうすればよいですか?
下のcoreLayer.bounds CGRECTを調整すると、結果が異なる場合があります。欠落しているブロックが下部にあり、時には画像の中央にあることがあります。
私はこのquestionの受け入れ答えからコードを開始し、私はカットオフの問題に気づいたとき、私は次のようにそれを修正:
UIGraphicsBeginImageContext(scrollView.contentSize);
{
CGPoint savedContentOffset = scrollView.contentOffset;
CGRect savedFrame = scrollView.frame;
//hide the scroll bars
[scrollView setShowsHorizontalScrollIndicator:NO];
[scrollView setShowsVerticalScrollIndicator:NO];
scrollView.contentOffset = CGPointZero;
scrollView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height);
//adjust layer for cut-off
CALayer *coreLayer = scrollView.layer;
coreLayer.bounds = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height);
[coreLayer renderInContext: UIGraphicsGetCurrentContext()];
//[scrollView.layer renderInContext: UIGraphicsGetCurrentContext()];
image = UIGraphicsGetImageFromCurrentImageContext();
scrollView.contentOffset = savedContentOffset;
scrollView.frame = savedFrame;
//reset the scroll bars to default
[scrollView setShowsHorizontalScrollIndicator:YES];
[scrollView setShowsVerticalScrollIndicator:YES];
}
UIGraphicsEndImageContext();
カットオフ調整は、(一部のビューでそれを固定助けました)しかし、UIScrollViewがかなり長いときにはまだそのカットオフになっています。私はしばらくの間これに取り組んできましたが、修正を見つけることができません。何か提案はありますか?誰もこの問題に遭遇しましたか?
助けてください!
考えてみましたが、一時的にscrollView.frame.sizeをscrollView.contentSizeに変更することを検討しましたか?これは、フレームに収まるように、すべてのセルを読み込むテーブルビューを必要とします(テーブルビューはフレームの外で、画面外ではなくコンテンツをキャッシュします)。 – Kalle