在我的ipad应用程序中,我有200张图像,我将这些图像添加到一个数组中 然后通过循环将此数组添加到图像视图中。 然后,我将此图像视图添加为滚动视图的子视图。
当我打开应用程序时,我的应用程序崩溃了 我尝试减少图像大小。但是,它没有用。
我的一位朋友首先告诉我应该只添加image1和image2 当用户滚动image1时,它会显示image2 之后,从图像视图中删除image1 并将image3添加到图像视图。
他告诉它可以保持记忆的使用
但是,我不知道我该怎么做? :d
请给我一些例子
提前谢谢。
我的代码在这里,
- (void)viewDidLoad
{
[super loadView];
self.view.backgroundColor = [UIColor grayColor];
UIScrollView *ScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 44, self.view.frame.size.width, self.view.frame.size.height)];
ScrollView.pagingEnabled = YES;
// Create a UIImage to hold Info.png
UIImage *image1 = [UIImage imageNamed:@"Image-001.jpg"];
UIImage *image2 = [UIImage imageNamed:@"Image-002.jpg"];
UIImage *image200 = [UIImage imageNamed:@"Image-200.jpg"];
NSArray *images = [[NSArray alloc] initWithObjects:image1,image2,...,image200,nil];
NSInteger numberOfViews = 200;
for (int i = 0; i < numberOfViews; i++)
{
CGFloat xOrigin = i * self.view.frame.size.width;
UIImageView *ImageView = [[UIImageView alloc] initWithFrame:CGRectMake(xOrigin, 0, self.view.frame.size.width, self.view.frame.size.height-44)];
[ImageView setImage:[images objectAtIndex:i]];
[ScrollView addSubview:ImageView];
}
ScrollView.contentSize = CGSizeMake(self.view.frame.size.width * numberOfViews, self.view.frame.size.height);
[self.view addSubview:ScrollView];
答案 0 :(得分:0)
看起来你正在索引0..200访问images数组,但它只包含三个元素。设置numberOfViews = 3;
,或者像这样索引到数组中:
ImageView.image = images[i%3];
模数索引将使您以重复序列添加三个图像中的每一个,并且仍然允许您使用更多数量的scrollView子视图进行测试。我怀疑你的崩溃是关于只有200张图像的记忆,除非它们是超级巨大的。
答案 1 :(得分:0)
您应该使用表格视图来显示图像。您不希望创建所有这些图像的数组,因为这会将所有这些图像放入内存中 - 这不是一件好事。您甚至不需要创建一个数组来保存名称,因为它们具有您可以从整数轻松构造的名称(您可以从tableView中的indexPath.row获取:cellForRowAtIndexPath:方法)。像这样:
- (void)viewDidLoad {
[super viewDidLoad];
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 200;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
NSString *imageName = [NSString stringWithFormat:@"Image-%.3d.jpg",indexPath.row +1];
UIImage *image = [UIImage imageNamed:imageName];
cell.imageView.image = image;
return cell;
}
此示例仅使用单元格的默认imageView来显示图像,这非常小。您可能希望创建一个自定义单元格,其中包含较大的图像视图(如果您想要每行多个图像,则可以并排放置几个)。