Iphone UIScrollView动态设置页面大小

Iphone UIScrollView动态设置页面大小,iphone,ios,uiview,uiscrollview,Iphone,Ios,Uiview,Uiscrollview,我对此做了很多调查,但没有找到解决方案 我有一个uicrollview名为scrollView的UIView内部。我正在分页模式下使用这个scrollView。在scrollView中,我有3个不同的视图是通过编程创建的。在这3个不同的视图中,我有一堆东西(UILabel、UITextView等)。。所有的视图内容都是动态的,并且是在运行时确定的。所以,我真的不知道scrollView.contentSize。如果我给出这个滚动视图的内容大小,有时,当用户向下滚动时,屏幕底部会出现一个白色空白。

我对此做了很多调查,但没有找到解决方案

我有一个uicrollview名为
scrollView
UIView内部。我正在分页模式下使用这个
scrollView
。在
scrollView
中,我有3个不同的视图是通过编程创建的。在这3个不同的视图中,我有一堆东西(UILabel、UITextView等)。。所有的视图内容都是动态的,并且是在运行时确定的。所以,我真的不知道
scrollView.contentSize
。如果我给出这个
滚动视图的内容大小,有时,当用户向下滚动时,屏幕底部会出现一个白色空白。我的问题是:
我可以为这个scrollView的每个页面动态设置内容大小吗
?例如,对于第1页:


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


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

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

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

这种方法没有错。您在底部看到空白,因为ARES将ScVIEW视图的内容大小设置为比内容更大的值。这就是问题所在。根据内容调整高度,空格将消失。

是的。您可以通过以下方式动态设置scrollView大小:

scroller.contentSize = CGSizeMake(1650, 2000);
可以使用以下属性为每个页面设置动态框架

[urScrollView scrollRectToVisible:frame animated:YES];
如果您正在使用PaginEnabled=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];
}

请查看此

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

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


当您将内容添加到
UIScrollview
时,您可以使用它们为当前内容设置
UIScrollview
contentSize
,我认为您对
contentSize
与页面大小比较感到困惑。分页大小始终是scrollView边界的大小,不是您可以设置的属性。也就是说,当您向左/向右滑动时,它将按滚动视图的宽度“翻页”

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

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

试试这个

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

使用此方法,我无法更改单个页面的内容大小。此方法使该页面的所有内容大小保持不变1、不变2。我希望page1和page2具有不同的内容大小。所以,我不能使用这种方法。这也不是我想要的。看看一个示例应用程序,所有页面的大小都相同。scroller.contentSize=CGSizeMake(16502000);这是我现在使用的,但正如你想象的,如果内容大小小于16502000(大多数情况下),用户将看到屏幕底部的空白。你明白我的意思吗?哦。。最好确保设置的contentSize始终大于scrollView框架。否则,请在设置contentSize之前再次重置scrollView框架(小于contentSize)。请这样做,那么scrollRectToVisible方法呢??