Question

I ai un scrollview qui génère automatiquement une série de sous-vues contenant imageviews. Le concept est qu'il est à peu près un lecteur de style PDF personnalisé, où chaque page est chargée dans un imageview comme une image. Il y a trois « couches » -. L'UIScrollView externe, les sous-vues générées automatiquement et le imageview à l'intérieur du sous-vue

J'ai eu quelques problèmes avec cela, je l'ai posé la question précédemment, mais malheureusement, le cœur de ma question était au mauvais endroit. Voici ma deuxième tentative:

rotate, tout est mis en rotation au besoin. Malheureusement, ce que je reçois: text alt

De toute évidence, je voudrais Image 1 de centrer et pour qu'il y ait aucune indication de l'image 2 jusqu'à ce que vous secouez la vue sur.

Voici mon code pour la mise en place de la vue:

- (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];
    }
}

Comment redéfinir la taille du cadre? Quelle fonction dois-je appeler etc. Comment puis-je centre de l'image?

Je suis nouveau à ce donc je présente mes excuses pour l'ambiguïté de ma question.

Vive

Était-ce utile?

La solution

Je l'ai compris. Il a été le cadre des pages individuelles que je avais besoin de changer, donc (avec l'aide d'une autre question gagné) je l'ai écrit une méthode Réorienter.

La première étape à cela est venu parce que je pensais que je avais besoin pour itérer et re-taille de chaque trame pour chacune de mes pages puis appliquer de nouveau les cadres à la vue. Pour cela, je devais arriver à créer un tableau que je remplirais dans la boucle ci-dessus. J'ai 7 pages au total.

Alors je pouvais (sur rotate) appeler la méthode ci-dessous Réorienter pour redimensionner chaque vue:

- (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++;
        }
    }
}

Autres conseils

Cela a fonctionné pour moi:

- (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)];
}

Fondamentalement, je vais mettre le contenu de décalage pour la nouvelle taille de la teneur en scrollview avant rotation (je commutation hauteur et la largeur pour la hauteur et la largeur prévue).

Cela a fonctionné pour moi lors de la rotation d'un mode plein écran paginée UIScrollView.

Toutes les sous-vues paginés ont le masque suivant un redimensionnement automatique de sorte qu'ils tombent parfaitement en place après la rotation:

UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleRightMargin
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top