调整 UIScrollView 的大小

Posted

技术标签:

【中文标题】调整 UIScrollView 的大小【英文标题】:Resize UIScrollView 【发布时间】:2011-08-30 20:54:16 【问题描述】:

我正在创建一个应用程序,例如来自苹果的“PageControl”。 每个页面都有一个滚动视图,其中包含另一个滚动视图。

UIScrollView * scrollForPage = [[UIScrollView alloc]init];  
    scrollForPage.pagingEnabled = NO;
    scrollForPage.contentSize = CGSizeMake(mainScroll.frame.size.width, 200 + mainScroll.frame.size.height+150);
    scrollForPage.autoresizingMask =  ( UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
    scrollForPage.clipsToBounds = YES;

    CGRect frame = mainScroll.frame;
    frame.origin.x = frame.size.width * page;
    frame.origin.y = 0;

    CGRect frame2 = frame;
    frame2.origin.x = 0;
    frame2.origin.y = 0;

    controller.view.frame = frame2;
    scrollForPage.frame = frame;


    [scrollForPage addSubview:controller.view];

    [mainScroll addSubview:scrollForPage];
    [scrollForPage release];

但是我的控制器的视图有一个动态大小,我怎样才能调整“scrollForPage”的大小以具有相同的大小??

谢谢

【问题讨论】:

我有一个疑问:“控制器”到底是什么?是视图控制器吗?父 ScrollView? 它是ViewController,主scrollView的view foreach“页面” 你到底想达到什么目的?您将 pagingEnabled 设置为 NO,但您指的是页面。即使滚动视图内容中的视图大小可能具有动态大小,滚动视图的大小也应保持不变,因此可能会迫使您更改滚动视图内容的大小。那么它到底是什么? 分页启用为YES,仅针对主Scrollview,其中scrollForPage为NO。我的 scrollForPage 大小始终相同。 【参考方案1】:

检测视图大小的代码如下:

CGRect screenSize = [[UIScreen mainScreen] bounds];

只要让scroll view的frame等于screenSize,经常调用上面这行代码即可。

【讨论】:

它不工作,具有相同的行为.. 我做了这个改变: (code) CGRect screenSize = [[UIScreen mainScreen] bounds]; screenSize.origin.x=frame.origin.x = frame.size.width * page; scrollForPage.frame = screenSize; (代码)

以上是关于调整 UIScrollView 的大小的主要内容,如果未能解决你的问题,请参考以下文章

调整容器 uiscrollview 中所有 uiscrollview 的大小

UIScrollView 子视图不会调整大小

调整 UIScrollView 的大小

如何动态调整 UIScrollView 的大小?

调整 UIScrollView 的大小以适应其内容……不起作用

如何调整 UIScrollView 的大小以适合子 UITextViews 的内容