- (void)drawLayer: bei Drehung des iPads neu aufrufen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • - (void)drawLayer: bei Drehung des iPads neu aufrufen

    Hallo zusammen,

    ich zeichne meine PDF Darstellung mit

    Quellcode

    1. - (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx

    Wenn das iPad gedreht wird, soll die Funktion noch mal neu aufgerufen werden, bzw. der View noch mal kompett neu geladen werden.

    Quellcode

    1. [self.view setNeedsDisplay];
    Der Aufruf löst bei mir kein Neuladen aus...

    Weiß jemand Rat?

    Danke schon mal :)
  • macmoonshine schrieb:


    Das setNeedsDisplay ist nicht rekursiv. Du musst es bei dem View aufrufen, der neugezeichnet werden soll.

    Danke für die Antwort. Ich probiere den Update so:

    Quellcode

    1. -(void)updateDisplay
    2. {
    3. // subviews neu zeichnen
    4. NSArray *viewsToUpdate = [myContentView subviews];
    5. for (UIView *v in viewsToUpdate) {
    6. NSLog(@"v %@",v);
    7. }
    8. [myContentView setNeedsDisplay];
    9. [scrollView setNeedsDisplay];
    10. }
    Alles anzeigen


    Funkt auch. Nur bräuchte ich jetzt noch eine Mögloichkeit die subLayer in UIView "v" anzusprechen, um diese zu aktualisieren. Geht das? In UIView "v" gibt es nämlich Sublayer

    Quellcode

    1. [v.layer addSublayer:tiledLayer];
  • macmoonshine schrieb:

    Das setNeedsDisplay ist nicht rekursiv. Du musst es bei dem View aufrufen, der neugezeichnet werden soll.
    so geht's

    Quellcode

    1. -(void)updateDisplay
    2. {
    3. // subviews neu zeichnen
    4. NSArray *viewsToUpdate = [myContentView subviews];
    5. for (UIView *v in viewsToUpdate) {
    6. NSArray *layerToUpdate = v.layer.sublayers;
    7. //NSLog(@"v %@",v);
    8. for (CALayer *l in layerToUpdate) {
    9. [l setNeedsDisplay];
    10. }
    11. }
    12. [myContentView setNeedsDisplay];
    13. [scrollView setNeedsDisplay];
    14. }
    Alles anzeigen