4

我已经对此进行了很多研究,但未能找到解决方案。

我在UIView内部有一个UIScrollView。我在 pagingEnabled 模式下使用它。在内部,我以编程方式创建了 3 个不同的视图。在这 3 个不同的视图中,我有一堆东西(UILabel、UITextView 等)。所有视图内容都是动态的,并且在运行时确定。所以,我真的不知道。如果我给出这个内容的大小,有时,当用户向下滚动时,我会在屏幕底部看到一个带有白色空白的屏幕。我的问题是:?例如,对于第 1 页:scrollViewscrollViewscrollViewscrollView.contentSizescrollViewCan i set the content size dynamically for each single page of this scrollView

self.scrollViewNews.contentSize = CGSizeMake(constant1,constant2);

并为第 2 页设置其他内容。

4

5 回答 5

3

我认为您contentSize对分页大小感到困惑。分页大小始终是滚动​​视图边界的大小,而不是您可以设置的属性。也就是说,当您向左/向右滑动时,它将按滚动视图的宽度“翻页”。

contentSize是滚动视图内所有子视图的虚拟边界框的大小。这仅用于限制滚动视图将滚动多远,并且对于分页,它将分页多少次,即contentSize.width / bounds.size.width.

假设 scrollView 没有放大/缩小(zoomScale = 1.0),那么您需要在虚拟“页面边界”上定位和调整子视图的大小。它们可以占据整个页面边界(调整大小以匹配 scrollview.bounds)或插入。如果您有一些更大/更小的内容,那么您必须决定是否要更改该内容的比例或在页面范围内向上/向下调整大小。

于 2012-08-15T14:28:30.617 回答
1

是的,您可以动态设置滚动视图的内容大小。您也可以使用此方法:

self.scrollViewNews.contentSize = CGSizeMake(constant1,constant2); 

这个方法没有错。您在底部看到空白区域,因为您将 scrollView 的 contentSize 的高度设置为大于其内容的值。这就是问题所在。根据内容调整高度,空格会消失。

于 2012-08-15T09:32:55.633 回答
1

请尝试从当前内容中获取实际内容大小。

内容必须是从 the 继承的某个类,UIView并且它具有frame.size.widthandframe.size.height属性。

contentSize当您将UIScrollview内容添加到UIScrollView.

于 2012-08-15T11:39:41.710 回答
0

试试这个。

- (void)viewDidLoad
{
    float sizeOfContent = 0;
    UIView *lLast = [scrollView.subviews lastObject];
    NSInteger wd = lLast.frame.origin.y;
    NSInteger ht = lLast.frame.size.height;

    sizeOfContent = wd+ht;

    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, sizeOfContent);
}
于 2013-02-13T11:44:18.177 回答
0

是的。您可以通过动态设置滚动视图大小

scroller.contentSize = CGSizeMake(1650, 2000);

您可以使用以下属性为每个页面设置动态框架

[urScrollView scrollRectToVisible:frame animated:YES];

如果您对滚动视图使用pagingEnabled = YES

下面的 UIScrollViewDelegate 委托将调整页面和内容

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

    int page = urScrollView.contentOffset.x/urScrollView.frame.size.width;
    pageControl.currentPage = page;
}

//pager action
- (IBAction)changePage:(id)sender{

    int page = pageControl.currentPage;
    CGRect frame = urScrollView.frame;
    frame.origin.x = frame.size.width * page;
    frame.origin.y  = 0;
    [urScrollView scrollRectToVisible:frame animated:YES];
}

请看这个示例应用程序

于 2012-08-15T09:35:17.787 回答