Ho un problema che non riesco a risolvere. Sto cercando di fare uno screenshot di un UIScrollView (incluso il contenuto fuori schermo) ma quando la vista è lunga il renderingInContext non ottiene tutti i contenuti della vista di scorrimento. Le dimensioni dell'immagine prodotte sono corrette ma i dati renderizzati sembrano essere pezzi mancanti del display lasciando uno spazio bianco dove dovrebbero essere quei pezzi. I blocchi mancanti provengono dal contenuto di un UIWebView, che credo sia impostato su "scaleToFit". Non succede ogni volta, sembra accadere solo quando l'altezza di UIWebView è abbastanza grande. Il che mi fa pensare che abbia a che fare con il ridimensionamento di UIWebView.Come si risolvono i "blocchi" mancanti di dati quando si scattano schermate su un dispositivo iOS?
Se aggiusto il coreLayer.bounds CGRECT qui sotto ottengo risultati diversi, a volte i blocchi mancanti sono in fondo e talvolta si trovano nel mezzo dell'immagine.
Ho iniziato con il codice della risposta accettata di questo question e quando ho notato il problema di taglio, ho modificato al seguente:
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();
La regolazione di taglio aiutato (fissato con alcuni punti di vista) ma si sta ancora interrompendo quando UIScrollView è abbastanza lungo. Ci sto lavorando da un po 'e non riesco a trovare una soluzione. Hai qualche suggerimento? Qualcuno ha mai riscontrato questo problema?
Si prega di aiuto!
Solo un pensiero, ma hai considerato di modificare temporaneamente scrollView.frame.size per scrollView.contentSize? Ciò richiederà la vista tabella per caricare tutte le celle, dato che si adattano al frame (la tabella visualizza il contenuto della cache al di fuori della cornice, non al di fuori dello schermo). – Kalle