スクロールビューのcontentOffset
を変更し、現在の変換マトリックスを変換することにより、スクロールビューの内容をスナップショットするa classがあります。これは、PDFコンテキストで新しいページを作成するためです。結果は、PDFページサイズのチャンクでスクロールビューのすべての内容を含むPDFです。Core Graphicsの変換マトリックスはiPadとは異なる働きをしますか?
iPadでは、これは両方向と両方向で機能しますが、デバイスが横向きの場合、iPhoneではスナップショットが失敗します(空のPDFが生成されます)。 iPhoneでiOSが回転を処理する方法と関係があるのかどうか疑問に思っていました。
私は行方不明または間違っていることがありますか? iPadはiPhoneが行う現在の変換行列で同じ変換を行わない場合、私は思ったんだけど
class ScrollViewSnapshotter: NSObject {
func PDFWithScrollView(scrollview: UIScrollView) -> NSData {
let pageDimensions = scrollview.bounds
let pageSize = pageDimensions.size
let totalSize = scrollview.contentSize
let numberOfPagesThatFitHorizontally = Int(ceil(totalSize.width/pageSize.width))
let numberOfPagesThatFitVertically = Int(ceil(totalSize.height/pageSize.height))
let outputData = NSMutableData()
UIGraphicsBeginPDFContextToData(outputData, pageDimensions, nil)
let savedContentOffset = scrollview.contentOffset
let savedContentInset = scrollview.contentInset
scrollview.contentInset = UIEdgeInsetsZero
if let context = UIGraphicsGetCurrentContext()
{
for indexHorizontal in 0 ..< numberOfPagesThatFitHorizontally
{
for indexVertical in 0 ..< numberOfPagesThatFitVertically
{
UIGraphicsBeginPDFPage()
let offsetHorizontal = CGFloat(indexHorizontal) * pageSize.width
let offsetVertical = CGFloat(indexVertical) * pageSize.height
scrollview.contentOffset = CGPointMake(offsetHorizontal, offsetVertical)
CGContextTranslateCTM(context, -offsetHorizontal, -offsetVertical) // NOTE: Negative offsets
scrollview.layer.renderInContext(context)
}
}
}
UIGraphicsEndPDFContext()
scrollview.contentInset = savedContentInset
scrollview.contentOffset = savedContentOffset
return outputData
}
}
:
は、ここに私のコードです。これは本当ですか?
は何ですかあなたがテストしているデバイスのOSバージョン? –
これはiPad Air 2とiOS 9.xと10.x – Moshe
で "snapshot fails"と定義されている可能性があります。 – paiv