0

スクロール ビュー内にイメージ ビューを含むアプリを作成します。
3 つのクラスがあり、各クラスはイメージ ビューにイメージを追加します。

ボタン1を押すと、class1が呼び出され、Class1の画像(image001からimage200まで)が埋められます。
ボタン 2 を押すと、class2 が呼び出され、Class2images (image201 から image400 まで) が埋められます。

問題は、私がclass1を呼び出すとき、画像ビューはclass1images(image001からimage200まで)を表示するときです。
class1 を呼び出した後、class2 を呼び出します。
class2 を呼び出すと、イメージ ビューに class2images (image201 から image400 まで) が表示されませんが
、class1Images (image001 から image200 まで) がアプリに残っています。

class1 のイメージはまだメモリ内にあるため、class2 のイメージはメモリに追加できないと思います。
class2 を呼び出すときに class1images を削除したい。
次のクラスを呼び出すと、メモリ内の古い画像が削除され、新しい画像に置き換えられます。

しかし、私のアプリはストーリーボードと ARC で開発されています。
そのため、ARC モードでメモリを手動で解放することはできません。
メモリ内の古い画像を削除する方法はありますか?

- (void)viewDidLoad{
[super loadView];  
self.view.backgroundColor = [UIColor grayColor];

ScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 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:@"Image001.jpg"];
    UIImage *image2 = [UIImage imageNamed:@"Image002.jpg"];
:
:
UIImage *image200 = [UIImage imageNamed:@"Image200.jpg"];

    NSArray *images = [[NSArray alloc] initWithObjects:image1,image2, . . . ,image200,nil];

    ImageView = [[UIImageView alloc] initWithFrame:CGRectMake(xOrigin, 0,self.view.frame.size.width, self.view.frame.size.height)];

    [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

2 に答える 2

0

imageviewのanimationImagesプロパティを新しい配列に設定すると、olf配列が削除され、新しい配列がアニメーション化されます。

110%安全になるようにstopAnimationを呼び出し、画像を設定し、startAnimationを呼び出します

于 2013-02-08T08:40:23.353 に答える
0

スクロールビューがクリーンアップされていないと思います。scrollView から前の画像を削除し、その後、次のクラスから画像を追加する必要があります。

スクロールビューから画像を削除するためにこのようなものを実装してみてください。その後、ボタンのクリックで他の画像を追加してください

for(UIView *subView in self.ScrollView.subviews)
{
    if([subView isKindOfClass:[UIImageView class]])
            [subView removeFromSuperview];
}

うまくいけばあなたを助けることができます。試してみてください。

于 2013-02-08T09:50:36.420 に答える