【发布时间】:2011-03-05 14:35:46
【问题描述】:
我有一个带有非常大的内容视图的 UIScrollView,它是一个书架,上面有大约 1000 个项目,当滚动视图内容变得超过大约 16000 像素高时,它显示黑色背景并且所有图形重叠/混合在一起。
这里是示例代码
- (void)viewDidLoad {
[super viewDidLoad];
// Doesn't work
int sizeForContent = 20000;
// Does Work
//sizeForContent = 10000;
UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
UIView *subView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, sizeForContent)];
subView.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"wood.jpg"]];
[scroll addSubview:subView];
[subView release];
scroll.contentSize = CGSizeMake(self.view.frame.size.width, sizeForContent);
[self.view addSubview:scroll];
[scroll release];
}
有人知道为什么会这样吗?我认为这与内存限制有关,但似乎并没有使用太多内存。
我知道我可以直接设置滚动视图背景颜色,而不是添加子视图并设置其背景,但我需要将滚动视图背景保留为颜色。
如果您想查看问题,可以从http://cl.ly/2i3F3q0G1j3q433n0f1E 获取基本的 xcode 项目。
非常感谢任何帮助或解释。
【问题讨论】:
-
一种方法可以将图像设置为视图的背景并将scrollView的背景颜色设置为清除颜色......但在这种情况下,您只需要松开背景图像的滚动功能在当前情况下正在发生这种情况。
标签: iphone sdk uiscrollview