Frage

Ich habe eine Scrollview, die automatisch eine Reihe von Subviews enthält imageviews erzeugt. Das Konzept ist, dass es so etwas wie ein benutzerdefinierte PDF-Stil-Reader, in dem jede Seite in zu einem Imageview als ein Bild geladen wird. Es gibt drei „Schichten“ -. Die äußere UIScrollView, die automatisch generierten Subviews und die Imageview innerhalb des subview

Ich habe einige Probleme mit diesem habe, habe ich die Frage vorher gefragt, aber leider war der Kern meiner Frage an der falschen Stelle. Hier ist mein zweiter Versuch:

drehen, alles wird nach Bedarf gedreht. Leider ist das, was ich immer: alt text

Offensichtlich würde Ich mag Bild 1 zentriert werden und dort 2 keinen Hinweis auf Bild sein, bis Sie Flick den Blick über.

Hier ist mein Code für die Ansicht der Einrichtung:

- (void)loadView {
    [self setUpView];
}
- (void)setUpView {
    //INITIALISE PAGING SCROLL VIEW
    CGRect pagingScrollViewFrame = [[UIScreen mainScreen] bounds];
    pagingScrollViewFrame.origin.x -= 10;
    pagingScrollViewFrame.size.width += 20;
    pagingScrollView = [[UIScrollView alloc] initWithFrame:pagingScrollViewFrame];
    pagingScrollView.contentMode =  UIViewContentModeScaleAspectFit;

    //CONFIGURE PAGING SCROLL VIEW  
    pagingScrollView.pagingEnabled = YES;
    pagingScrollView.backgroundColor = [UIColor blackColor];
    pagingScrollView.contentSize = CGSizeMake(pagingScrollViewFrame.size.width*7, pagingScrollViewFrame.size.height);

    //ACTIVATE PAGING SCROLL VIEW
    self.view = pagingScrollView;

    //ADD PAGES TO SCROLL VIEW
    for (int i = 0; i < 7; i++){
        ImageScrollView *page = [[[ImageScrollView alloc] init] autorelease];
        [self configurePage:page forIndex:i];
        [pagingScrollView addSubview:page];
    }
}

Wie kann ich neu definiert die Größe des Rahmens? Welche Funktion soll ich usw. nennen Wie zentriere ich das Bild?

Ich bin neu in diesem so ich für die Mehrdeutigkeit meiner Frage entschuldigen.

Prost

War es hilfreich?

Lösung

Ich habe es herausgefunden. Es war der Rahmen der einzelnen Seiten, dass ich Änderungen erforderlich, so (mit Hilfe von einer anderen Frage gewonnen) ich eine Re-Orient-Methode geschrieben hat.

Der erste Schritt dazu gekommen, weil ich herausgefunden, dass ich Iterierte benötigt durch und die Größe neu bestimmen jeden Rahmen für jede meiner Seiten und dann erneut bewerben den Rahmen zu der Ansicht. Damit dies geschehen kann brauchte ich ein Array zu erstellen, die ich oben in der For-Schleife füllen würde. Ich habe insgesamt 7 Seiten.

Dann könnte ich (auf drehen) rufen die folgenden Wieder orientieren Verfahren zur Wieder Größe jede Ansicht:

- (void) reOrient{
    if(UIInterfaceOrientationIsPortrait(self.interfaceOrientation)){    
        CGRect f;
        int i = 0;
        for (ImageScrollView *page in pageArray) {          
            f = page.frame;
            f.size.width = 320;
            f.origin.x = (f.size.width * i);
            page.frame = f;
            pagingScrollView.contentSize = CGSizeMake(f.size.width * 7, 480);
            i++;
        }
    }else{
        CGRect f;
        int i = 0;
        for (ImageScrollView *page in pageArray) {          
            f = page.frame;
            f.size.width = 480;
            f.origin.x = (f.size.width * i);
            page.frame = f;
            pagingScrollView.contentSize = CGSizeMake(f.size.width * 7,  480);
            i++;
        }
    }
}

Andere Tipps

Das ist für mich gearbeitet:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];

    //get current page based on offset before rotation    
    NSInteger currentPage = self.scrollView.contentOffset.x / self.scrollView.bounds.size.width;

    //set anticipated scrollview content size by switching width and height (they will be switched after rotation)
    [self.scrollView setContentSize:CGSizeMake(totalPages * self.view.bounds.size.height, self.view.bounds.size.width)];

    //set the anticipated content offset based on height before rotation
    [self.scrollView setContentOffset:CGPointMake(currentPage * self.scrollView.bounds.size.height, 0.0f)];
}

Grundsätzlich setze ich den Inhalt für die neue Scrollinhaltsgröße versetzt, bevor rotierenden (Ich bin Schale Höhe und Breite für die erwartete Höhe und Breite).

Das ist für mich gearbeitet, als das Drehen eines Vollbild-UIScrollView ausgelagert.

Alle der ausgelagerten Subviews haben Maske die folgenden automatischen Größen, damit sie ordentlich in Position nach einer Drehung fallen:

UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleRightMargin
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top