我使用storyboard和ARC模式。这包括三个视图控制器 每个视图控制器都有自己的类。
VC1有Class1.h和Class1.m
VC2有Class2.h和Class2.m。
在每个m文件中,我创建图像视图并将图像添加到图像视图中 然后我将此图像视图添加到滚动视图中。
在这种情况下,在class1中使用大约200张图像后,class2的图像无法在图像视图中显示。
起初,我认为这是记忆问题 我认为它达到内存限制,因此无法再次添加其他图像。
因此,我减少图像尺寸并再试一次(从300Mb减少到30Mb) 但是,它没有用。我不知道。 我怎么解决这个问题?请告诉我方法。
这是我的代码。
- (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;
NSInteger numberOfViews = 200;
for (int i = 0; i < numberOfViews; i++) {
CGFloat xOrigin = i * self.view.frame.size.width;
// Create a UIImage to hold Info.png
UIImage *image1 = [UIImage imageNamed:@"Image-001.jpg"];
UIImage *image2 = [UIImage imageNamed:@"Image-002.jpg"];
UIImage *image13 = [UIImage imageNamed:@"Image-200.jpg"];
NSArray *images = [[NSArray alloc] initWithObjects:image1,image2,...,image200,nil];
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 :(得分:1)
检查您是否要将图像视图添加到scrollview或self.view
检查滚动视图框架或scrollview内容大小。要向UIScrollView制作n个图像,你可以这样做
在for循环外声明并添加数组对象,这样会占用编译时间。
UIScrollView * scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,self.view.size.width,self.view.size.height)]; [self.view addsubView:scroll];
float xaxis = 10;
for(int i = 0; i&lt; 20; i ++) { UIImageView * imageview = [[UIimageView alloc] initWithFrame:CGRectMake(xaxis,0,150,150)]]; [imageview setImage:[UIImage imagenamed:@“”]]; //如果你想要多个图像,你可以从数组调用 [scroll addSubview:imageview]; xaxis = xaxis * i + 50; // apprx}
scroll.contentsize = CGSizemake(x-轴+ 30,self.view.size.height);
答案 1 :(得分:0)
为每张图片创建单独的UIImageView
(尺寸合适),并将所有UIImageView
添加到UIScrollView
,并提供contentSize
UIScrollView
的正确{。}}。
获取变量int x;
并在 .h文件中声明它
并在x=0;
方法
viewDidLoad
然后给出适当的UIImageView框架
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor grayColor];
x=0;
UIScrollView *ScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 44, self.view.frame.size.width, self.view.frame.size.height)];
ScrollView.pagingEnabled = YES;
NSInteger numberOfViews = 200;
for (int i = 0; i < numberOfViews; i++) {
CGFloat xOrigin = i * self.view.frame.size.width;
// Create a UIImage to hold Info.png
UIImage *image1 = [UIImage imageNamed:@"Image-001.jpg"];
UIImage *image2 = [UIImage imageNamed:@"Image-002.jpg"];
UIImage *image13 = [UIImage imageNamed:@"Image-200.jpg"];
NSArray *images = [[NSArray alloc] initWithObjects:image1,image2,...,image200,nil];
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];
x= x + imageView.frame.size.width;
}
ScrollView.contentSize = CGSizeMake(imageView.frame.size.width * numberOfViews, self.view.frame.size.height);
[self.view addSubview:ScrollView];
}
答案 2 :(得分:0)
为什么要初始化imageArray 200次?
为什么以下部分位于for循环::
中// Create a UIImage to hold Info.png
UIImage *image1 = [UIImage imageNamed:@"Image-001.jpg"];
UIImage *image2 = [UIImage imageNamed:@"Image-002.jpg"];
UIImage *image13 = [UIImage imageNamed:@"Image-200.jpg"];
NSArray *images = [[NSArray alloc] initWithObjects:image1,image2,...,image200,nil];
您需要在for循环开始之前初始化 images 数组一次,然后遍历这些图像以添加到scrollview