将 UIViews 添加到 ScrollView 时发生的奇怪事情

Posted

技术标签:

【中文标题】将 UIViews 添加到 ScrollView 时发生的奇怪事情【英文标题】:Weird thing happening when adding UIViews to a ScrollView 【发布时间】:2011-10-09 10:19:52 【问题描述】:

将 UIViews 添加到我的滚动视图时遇到问题:

NSArray *views = [NSArray arrayWithObjects:view1, view2, view3,nil];
    for (int i = 0; i < views.count; i++) 
        CGRect frame;
        frame.origin.x = self.scrollView.frame.size.width * i;
        frame.origin.y = 0;
        frame.size = self.scrollView.frame.size;



        [self.scrollView addSubview:[views objectAtIndex:i]];
    


    self.pageControl.numberOfPages = views.count;
    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * views.count, self.scrollView.frame.size.height);

这就是我正在使用的代码。问题是 ScrollView 有三个页面,而且全部,但只有第一页实际上包含一个视图,它是数组中的最后一个。为什么会这样?我也试过了:

for (UIView *view in views) 
    [self.scrollView addSubview:view];

同样的结果。我做错了什么?

【问题讨论】:

【参考方案1】:

你需要设置你添加的视图的位置:

[views objectAtIndex:i].frame = frame;

您目前没有在任何地方更改视图的位置,所以它们可能都在 (0|0)。

【讨论】:

哈哈,我不知道!我以前从未见过这种情况。【参考方案2】:

您正在循环中初始化框架,但忽略了对其执行任何操作。您需要替换每个视图的框架才能使用它。

【讨论】:

以上是关于将 UIViews 添加到 ScrollView 时发生的奇怪事情的主要内容,如果未能解决你的问题,请参考以下文章

将 UIViews 作为子视图添加到 UIViewController [关闭]

如何将 UIViews 添加到我的 contentView (AwakeFromNib)

以编程方式将 UITapGestureRecognizer 添加到 Outlet 集合中的 UIViews

在 Interface Builder 中,如何将 UIViews 添加到属于我创建的自定义视图的子视图?

无法将tableview添加到uiview

UIView 未自动释放。我的问题在哪里?