我有一个UIScrollView类型的详细信息页面。在它上面我想要一个可选的UIImageView和一个强制的UITextView。如果没有可用的图像,则图像视图不应占用任何空间。文本视图的文本可以有不同的大小。
当视图加载了图像和文本时,我需要能够滚动浏览所有内容。所以图像从屏幕顶部滑落。
我无法完成这项工作,我觉得它应该很容易。有什么想法吗?
答案 0 :(得分:0)
您应该创建自己的视图,该视图在UIScrollView之后继承。
在您的自定义YourScrollView中,您应该覆盖
- (void) layoutSubviews;
计算文本大小,图像大小(以及之间的间距),然后使用以下方法设置滚动视图的contentSize:
[self setContentSize:CGSizeMake(CGRectGetWidth(self.bounds), yourCalculatedHeight)];
希望这有帮助, 保罗
答案 1 :(得分:0)
您必须使用视图的大小调用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中执行最后一次操作,或者一次完成。