-1

ポートレートモードからランドスケープモードに移行すると、ビューは広く拡大する必要がありますが、長さは同じでスクロールビューである必要があるため、スクロールすると完全なコンテンツが表示されます。

if (([[UIDevice currentDevice]orientation] == UIInterfaceOrientationLandscapeLeft) ||
    ([[UIDevice currentDevice]orientation] == UIInterfaceOrientationLandscapeRight))
{
    UIScrollView *scrollView=[[UIScrollView alloc] init];
    UIView *view1 = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 480, 480)];
    view1 = self.view;
    [scrollView addSubview:view1];
    scrollView.frame = CGRectMake(0, 0, 480, 480);
    scrollView.contentSize = CGSizeMake(480, 480);
    scrollView.delegate = self;
    scrollView.alwaysBounceVertical = YES;
    [self.view addSubview:scrollView];
}
4

2 に答える 2

0

たとえば、より多くの情報で質問を更新してください-何が機能していて、何が機能していないのですか? 更新をコメントとして追加しないで、質問を編集してください。

既存のコードでは、少なくともこれは間違っている/混乱しています:

 UIView *view1 = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 480, 480)];
 view1 = self.view;

最初の行で新しいビューにポインタを割り当ててから、2 行目で既存の self.view に再割り当てしています。それからここに:

    [self.view addSubview:scrollView];

コンテンツ ビューを含むスクロールビューを同じコンテンツ ビューに追加しています。それはうまくいきません。

よりクリーンな解決策として、スクロールビュー/サブビューのコンボを両方の向きに設定してみませんか。次に、回転するときに、スクロールビューのコンテンツサイズを変更するだけです。

通常の直立方向の場合:

            self.scrollview.contentSize = self.scrollview.bounds.size;

風景の場合:

              self.scrollview.contentSize =
         CGSizeMake(self.scrollView.bounds.size.width, self.contentView.bounds.size.height 

(コンテンツが scrollView 内に含まれる contentView というビューにあると仮定します)

contentOffsetストーリーボードの両方の向きで を正しく機能させることができるはずですが、そうでない場合は、向きごとにコードで設定できます。

于 2013-01-29T15:47:20.547 に答える