【问题标题】:UiScrollView with scrolling content带有滚动内容的 UiScrollView
【发布时间】:2010-05-06 11:45:29
【问题描述】:

我有一个 UIScrollView 类型的详细信息页面。在它上面我想要一个可选的 UIImageView 和一个强制的 UITextView。如果没有可用的图像,则图像视图不应占用任何空间。文本视图的文本可以有不同的大小。

当视图加载了图像和文本时,我需要能够滚动浏览所有内容。所以图像从屏幕顶部滑落。

我只是无法完成这项工作,我觉得它应该很容易。有什么想法吗?

【问题讨论】:

    标签: iphone uiscrollview


    【解决方案1】:

    您必须使用视图的大小调用 setContentSize。

    CGRect frameOfImage;
    CGRect frameOfText;
    CGRect frameOfContent;
    
    frameOfImage.origin = CGPointZero;
    frameOfImage.size = myImage ? [myImage size] : CGSizeZero;
    
    [myImage setFrame:frameOfImage];
    
    frameOfText.origin.x = 0;
    frameOfText.origin.y = frameOfImage.origin.y + frameOfImage.size.height;
    frameOfText.size = [myText.text sizeWithFont:myText.font forWidth:myScroll.bounds.width lineBreakMode:myText.lineBreakMode];
    
    [myText setFrame:frameOfText];
    
    frameOfContent = CGRectUnion( frameOfImage , frameOfText );
    frameOfContent.size.height += frameOfContent.origin.y;
    frameOfContent.size.width += frameOfContent.origin.x;
    
    [myScroll setContextSize:frameOfContent.size];
    

    当您知道是否有图像时,您可以在自定义 UIScrollView 的 layoutSubviews 中完成最后一点,或者在控制器中一次完成所有操作。

    【讨论】:

      【解决方案2】:

      您应该创建自己的视图,该视图继承于 UIScrollView。

      在您的自定义 YourScrollView 中,您应该覆盖

      - (void) layoutSubviews;
      

      计算文本的大小、图像的大小(以及它们之间的额外间距),然后使用以下方法为滚动视图设置 contentSize:

      [self setContentSize:CGSizeMake(CGRectGetWidth(self.bounds), yourCalculatedHeight)];
      

      希望这会有所帮助, 保罗

      【讨论】:

        猜你喜欢
        • 2018-05-03
        • 1970-01-01
        • 2019-11-11
        • 2011-12-31
        • 1970-01-01
        • 2021-07-12
        • 1970-01-01
        • 2020-12-07
        • 2012-05-13
        相关资源
        最近更新 更多