1

水平方向にスワイプする別のページを持つためUIScrollViewに で使用したい があります。すべてのページに と の数UIPageControlを追加する必要があります。私は Web サービスを呼び出し、データが到着したら、次のように項目を追加します。UITextViewUIImageViewViewController

for(int i=0;i<[arrData count];i++) {
    NSString *body=@"Dummy text";

    CGRect frame;

    frame.origin.x = self.scrollView.frame.size.width * i;
    frame.origin.y = 0;
    frame.size.width = self.scrollView.frame.size.width;
    frame.size.height = 40; //vedere landscape

    UILabel *label = [[UILabel alloc] initWithFrame:frame];
    [label setText:body];
    label.numberOfLines=0;
    [label sizeToFit];
    label.autoresizingMask=UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    [self.scrollView addSubview:label];

    [label setBackgroundColor:[UIColor whiteColor]];
    [self.scrollView addSubview:label];
    int y_pos=label.frame.size.height+10;
    int x_pos=0;
    for(int img=0; img<[[[arrData objectAtIndex:i]objectForKey:@"images"] count]; img++) {
        NSString *imageURL=[[[[arrData objectAtIndex:i] objectForKey:@"images"] objectAtIndex:img] objectForKey:@"fn"];

        NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:imageURL]];
        UIImage *image = [UIImage imageWithData:imageData];
        UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
        [imageView setFrame:CGRectMake(self.scrollView.frame.size.width * i+img*100, y_pos, image.size.width, image.size.height)];
        [self.scrollView addSubview:imageView];

    }

}
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * [arrData count], self.scrollView.frame.size.height);

縦向きでは問題なく動作しますが、デバイスを回転させると、明らかにレイアウトが台無しになります... with で作業する最良の方法はScrollViewどれPageControlですか? 回転を処理し、挿入されたアイテム間の距離を変更する必要がありますか、または (私が思うに) すべてを構築するためのより良い方法はありますか?

4

1 に答える 1

1

はい、方向が変わるたびにスクロールビューフレームを再設定する必要があります。これは、柔軟な幅が横向きモードでスクロールビューの幅を両側から伸ばすため、内容が重なって水平スクロール時に問題が発生するためです。実行できることの1つは、scrollviewの自動サイズ変更マスクをflexibleRightMargin|flexibleLeftMarginに設定することです。スクロールビューの内容は中央に保持されますが、スクロールはきれいに見えません。

于 2012-12-14T13:59:49.397 に答える