0

UIScrollView を UIViews と共に使用しようとしています (xib ファイルとして管理するため)。今のところ、ビューを格納する配列があります。

testingView はUIViewcontroller独自の xib ファイルを使用し、testingView2 もUIViewcontroller独自の別の xib ファイルを使用します

- (void) viewDidLoad {

[super viewDidLoad];

_testingView = [[TestingViewController alloc] init];
_testingView2 = [[TestingViewController2 alloc] init];

self.array = [[NSArray alloc] initWithObjects: _testingView.view, _testingView2.view, nil];

for (int i = 0; i < [array count]; i++) {
CGRect frame;
frame.origin.x = self.scrollingView.frame.size.width*i;
frame.origin.y = 0;
frame.size = self.scrollingView.frame.size;

[self.scrollingView addSubView: [self.array objectAtIndex:i]];

}

self.scrollingView.contentSize = CGSizeMake (_scrollingView.frame.size.width*[array count], _scrollingView.frame.size.height);

}

問題は、彼が最初のビューのみを取得していて (たとえそれらを切り替えても)、2 番目のビューが表示されないことです。ビューの代わりに UIImages を使用しても同じことが機能しています。彼は配列の順序で 2 番目のビューを見ていないようです...

4

3 に答える 3

0

ループでは、新しく追加されたサブビューのフレームを計算しforますが、そのフレームをそのサブビューに設定しません。

ループで、たとえば次のようにサブビューを追加します。

UIView *subview = (UIView *)[array objectAtIndex:i];
subview.frame = frame;
[self.scrollingView addSubView:subview];
于 2013-05-28T07:35:06.953 に答える
0

スクロール ビューのサブビューごとにフレームを設定する必要があります。たとえば、_testingView2.view のフレームを _testingView1.view フレーム幅から x のオフセットに設定できます。

_testingView2.view.frame = CGRectOffset(_testingView2.frame, CGRectGetWidth(_testingView1.frame), 0)

フレームを計算するには多くの方法があります。メソッド CGRectWidth、CGRectGetMaxX などを使用してみてください。

于 2013-05-28T07:36:17.480 に答える
0

使用していないのに、for ループ内で変数「frame」を計算するのはなぜですか?

私の見解では、コードに次の変更を加える必要があります。

for (int i = 0; i < [array count]; i++) {
    CGRect frame;
    frame.origin.x = self.scrollingView.frame.size.width*i;
    frame.origin.y = 0;
    frame.size = self.scrollingView.frame.size;

    **UIView *v=[self.array objectAtIndex:i];**

   **v.frame=frame;**


  **[self.scrollingView addSubView:v];**

}

それがうまくいくことを願っています。

于 2013-05-28T07:43:43.737 に答える