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);

}

问题是他只采用第一个视图(即使我切换它们)并且没有显示第二个视图,与 UIImages 相同而不是视图正在工作,有人可以解释我为什么吗?似乎他没有看到数组顺序中的第二个视图......

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 的框架设置为x 与_testingView1.view 框架宽度的偏移量。

_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 回答