Odpowiedz na ten temat
Pokaż wyniki od 1 do 5 z 5
  1. Avatar Bananera
    Dołączył
    Oct 2010
    Skąd
    Szczecin
    Postów
    198

    Cytuj | #1

    Witam,

    Mam głupi problem z renderowaniem pdf'a. Wyswietlamy pdf ma wymiary >1300 px szerokości i >800px wysokosci wiec jest UIView w ktorym sie znajduje jest wiekszy niż szerokość ekranu. Ten też UIView wsadzony jest do UIScrollView.

    Problem polega na tym, że przy renderowaniu wyświetlany jest jedynie obraz który znajduje się na ekranie na starcie. Czyli wszystko co poza ekranem przy rysowaniu juz nigdy nie zostanie narysowane.
    W konsekwencji po scrollowaniu widać dużą czarną przestrzeń. Wyświetlił się tylko górny-lewy róg scrollview, a w nim znajdował się dolny-prawy róg pdf'a.
    Mam nadzieje że ktoś mnie zrozumie, bo chyba troche to pokręcone

    Oto kawałek kodu:

    Kod:
    - (void)drawRect:(CGRect)rect
    {    
    	CGContextRef ctx = UIGraphicsGetCurrentContext();
        
    	// PDF might be transparent, assume white paper
    	[[UIColor whiteColor] set];
    	CGContextFillRect(ctx, rect);
        
    	// Flip coordinates
    	CGContextGetCTM(ctx);
    	CGContextScaleCTM(ctx, 1, -1);
    	CGContextTranslateCTM(ctx, 0, -self.frame.size.height); // rect -> self
        
        NSURL *url = [NSURL URLWithString:@"ciach!"];
    	
        // url is a file URL
    	CGPDFDocumentRef pdf = CGPDFDocumentCreateWithURL((CFURLRef)url);
    	CGPDFPageRef page1 = CGPDFDocumentGetPage(pdf, 1);
        
    	// get the rectangle of the cropped inside
    	CGRect mediaRect = CGPDFPageGetBoxRect(page1, kCGPDFMediaBox);
    	CGContextScaleCTM(ctx, 2.0,
                          2.0);
    	CGContextTranslateCTM(ctx, -mediaRect.origin.x, -mediaRect.origin.y);
        
    	// draw it
    	CGContextDrawPDFPage(ctx, page1);
    	CGPDFDocumentRelease(pdf);
    Komputer:  MacBook Białas 13" :)
    Telefon:  iPhone 3g 8Gb
    Odtwarzacz:  iPhone 3g 8Gb
    Tablet:  iPad 16gb WiFi
    Zapraszam na MacWyznawca.pl



  2. Dołączył
    Apr 2008
    Postów
    6

    Cytuj | #2

    Nie lepiej pokazać tego po prostu w UIWebView? - (void)drawRectCGRect)rect nie można samemu wykonywać, może gdzieś w kodzie wywołujesz tą metodę zamiast setNeedsDisplay
    Ostatnio edytowane przez robertjunior ; 16.02.2012 o 20:27

  3. Avatar Bananera
    Dołączył
    Oct 2010
    Skąd
    Szczecin
    Postów
    198

    Cytuj | #3

    UIWebView było dla mnie zdecydowanie za mało wydajne. Już sobie poradziłem z tym, ale dzięki

    Pozdrawiam,
    Arek
    Komputer:  MacBook Białas 13" :)
    Telefon:  iPhone 3g 8Gb
    Odtwarzacz:  iPhone 3g 8Gb
    Tablet:  iPad 16gb WiFi
    Zapraszam na MacWyznawca.pl

  4. Avatar Tojot
    Dołączył
    Feb 2008
    Postów
    741

    Cytuj | #4

    W tej sytuacji netykieta nakazuje byś opisał rozwiązanie.
    Komputer: MacBook Pro 15" wer. MacBookPro2,2

  5. Avatar Bananera
    Dołączył
    Oct 2010
    Skąd
    Szczecin
    Postów
    198

    Cytuj | #5

    @Tojot: Wiem, ale błąd był tak głupi i ogólnie wynikający z całkiem innej rzeczy, że nie było sensu tego robić 
    Komputer:  MacBook Białas 13" :)
    Telefon:  iPhone 3g 8Gb
    Odtwarzacz:  iPhone 3g 8Gb
    Tablet:  iPad 16gb WiFi
    Zapraszam na MacWyznawca.pl

Odpowiedz na ten temat