-1

ストーリーボードとARCモードを使用しています。これには、3 つのビュー コントローラーが含まれます。
各View Controllerにはクラスがあります。

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];

}

4

3 に答える 3

1
  1. imageview を scrollview に追加するのか、self.view に追加するのかを確認してください。

  2. スクロールビューフレームまたはスクロールビューコンテンツのサイズを確認してください。n個の画像をUIScrollViewに作成するには、これを行うことができます

  3. 配列オブジェクトを 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 <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(xaxis+30,self.view.size.height);

于 2013-02-09T12:37:16.203 に答える
0

UIImageView画像ごとに(適切なサイズで)別々に作成し、すべてUIImageViewをに追加して適切なものUIScrollViewを与えます。contentSizeUIScrollView

変数を取り、 .h ファイルint x;で宣言し、メソッド で代入します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];

}
于 2013-02-09T12:26:58.783 に答える
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ループが始まる前に、画像配列を1回だけ初期化し、それらの画像を繰り返してスクロールビューに追加する必要があります

于 2013-02-09T12:49:25.267 に答える