我正在尝试在ScrollView上添加10张以上的图片。
NSUInteger i;
for (i = 1; i <= numberOfImage; i++)
{
NSString *imageName = [NSString stringWithFormat:@"d%dimage%d.png", imageSection, i];
UIImage *image = [UIImage imageNamed:imageName];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
// setup each frame to a default height and width, it will be properly placed when we call "updateScrollList"
CGRect rect = imageView.frame;
rect.size.height = kScrollObjHeight;
rect.size.width = kScrollObjWidth;
imageView.frame = rect;
imageView.tag = i; // tag our images for later use when we place them in serial fashion
[scrollView addSubview:imageView];
[imageView release];
}
此代码来自Apple示例,它运行正常。但如果变量'i'大于10,'UIImage * image'为空。 imageName似乎是正确的。但我不知道为什么它不加载图像。有没有人看到问题?
还有一件事。如果我喜欢这样,iOS会自动控制内存吗?我的意思是,如果所有(超过10个)图像都加载到内存中,即使它们没有显示,也会浪费内存。我听说iOS加载的图像只显示在屏幕上,而免费图像则不显示。是对的吗?
感谢阅读。
答案 0 :(得分:1)
UIimage imageNamed:缓存文件内容。我建议你使用UIImage + imageWithContentsOfFile:在这种情况下根本不缓存。
答案 1 :(得分:0)
您可能需要相应地设置contentSize。
除非您使用基于CATiledLayer的UIView,否则IOS不会执行该魔术内存管理。
如果未创建UIImage,则因为该名称未引用资源文件夹中的图像而您应该有例外。
答案 2 :(得分:0)
您必须确保图像具有正确的名称(如0dimage11.jpg)并添加到XCode项目中。
答案 3 :(得分:0)
您需要拥有正确的文件名。你说你认为文件名是正确的。
NSLog(@"Loop %d: d%dimage%d.png", i,imageSection, i]);
注销文件名,以便查看名称实际名称。将该行放在循环中。
NSUInteger i;
for (i = 1; i <= numberOfImage; i++)
{
NSString *imageName = [NSString stringWithFormat:@"d%dimage%d.png", imageSection, i];
NSLog(@"Loop %d: d%dimage%d.png", i,imageSection, i]);
UIImage *image = [UIImage imageNamed:imageName];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
// setup each frame to a default height and width, it will be properly placed when we call "updateScrollList"
CGRect rect = imageView.frame;
rect.size.height = kScrollObjHeight;
rect.size.width = kScrollObjWidth;
imageView.frame = rect;
imageView.tag = i; // tag our images for later use when we place them in serial fashion
[scrollView addSubview:imageView];
[imageView release];
}
然后监视调试器中的文件名,看看这些图像文件是否存在,以及Apple放置图像文件的目录。
答案 4 :(得分:0)
答案 5 :(得分:0)
对不起伙计们。结果证明这是我的错。好吧,不完全是我的错。设计师向我扔了许多文件,如d1imgae11.png错误的文件名...无论如何,你们所有人的提示给了我不同的视图来看问题,我得到了另一个关于不缓存图像的提示。感谢。