質問

画像ビューを含む一連のサブビューを自動的に生成するScrollViewがあります。コンセプトは、それがほとんどカスタムPDFスタイルの読者であり、各ページが画像としてImageViewにロードされているということです。 3つの「レイヤー」があります - 外側のuiscrollview、自動生成されたサブビュー、サブビュー内のimageView。

私はこれにいくつかの問題を抱えていましたが、以前に質問をしましたが、残念ながら、私の質問の核心は間違った場所にありました。これが私の2回目の試みです:

回転すると、必要に応じてすべてが回転します。残念ながら、これは私が得ているものです:alt text

明らかに、画像1を中央に配置し、ビューをフリックするまで画像2のヒントがないようにしたいと思います。

ビューを設定するための私のコードは次のとおりです。

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

フレームのサイズを再定義するにはどうすればよいですか?どのような関数を呼び出すべきですか。どのように画像を中心にしますか?

私はこれに慣れていないので、私の質問のあいまいさをお詫びします。

乾杯

役に立ちましたか?

解決

私はそれを理解しました。私が変更する必要があるのは個々のページのフレームだったので、(別の質問から得られた助けを借りて)私は再オリエントの方法を書きました。

これへの最初のステップは、各ページの各フレームを繰り返して再サイズして、ビューにフレームを再適用する必要があることを理解したためです。これを起こすためには、上記のループに記入する配列を作成する必要がありました。合計7ページがあります。

次に、以下の再開メソッドを呼び出して、各ビューを再サイズすることができます。

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

他のヒント

これは私のために働いた:

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

基本的に、回転する前に、新しいScrollViewコンテンツサイズのコンテンツオフセットを設定しています(予想される高さと幅の高さと幅を切り替えます)。

これは、フルスクリーンのページングuiscrollviewを回転させるときに私のために機能しました。

ページングされたサブビューはすべて、次の自動化マスクを備えているため、回転後にきちんと所定の位置に落ちるようにします。

UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleRightMargin
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top