0

我有 5 张图片,我想添加到数组中

代码:

#import "ViewController.h"

UIImageView *pic;
NSMutableArray *picArray;

@interface ViewController ()

@property (nonatomic, strong) NSMutableArray *picArray;

@end


@implementation ViewController
@synthesize picArray;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    picArray = [[NSMutableArray alloc] init];

    pic = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 50, 75)];
    pic.image = [UIImage imageNamed:@"pic1.png"];
    pic.center = CGPointMake(100, 110);
    [picArray addObject:pic];

    pic.image = [UIImage imageNamed:@"pic2.png"];
    pic.center = CGPointMake(100, 120);
    [picArray addObject:pic];

    pic.image = [UIImage imageNamed:@"pic3.png"];
    pic.center = CGPointMake(100, 130);
    [picArray addObject:pic];

    pic.image = [UIImage imageNamed:@"pic4.png"];
    pic.center = CGPointMake(100, 140);
    [picArray addObject:pic]; 

    pic.image = [UIImage imageNamed:@"pic5.png"];
    pic.center = CGPointMake(100, 150);
    [picArray addObject:pic]; 


    pic = [picArray objectAtIndex:0];

    pic.center = CGPointMake(200, 100);
    [self.view addSubview:pic];


}

当我构建并运行此代码时,无论索引如何,我都只看到数组的最后一张图片 pic5.png

当我在数组中使用 NSString 时一切正常,但在我使用图像时没有(

4

3 回答 3

1

UIImageView您每次都需要创建一个新的。目前您只需创建一个UIImageView,并将其图像更改五次。您已将同一图像视图对象的五个版本添加到数组中。

像这样的东西:

pic = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 50, 75)];
pic.image = [UIImage imageNamed:@"pic1.png"];
pic.center = CGPointMake(100, 110);
[picArray addObject:pic];

// Note how a new image is created here
pic = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 50, 75)
pic.image = [UIImage imageNamed:@"pic2.png"];
pic.center = CGPointMake(100, 120);
[picArray addObject:pic];

// ...etc
于 2013-05-10T13:57:50.523 回答
0

是的,最后一张图片只显示在这里,因为您只是在更改 imageview 中的图片。使用不同的帧获取不同的图像视图并将其添加到视图中。

要在您的视图中添加图像,您可以使用一个 for 循环并根据您的帧添加图像。

for(int i=0;i<5;i++)
    {
    pic = [[UIImageView alloc] initWithFrame:CGRectMake(0, i*75, 50, 75)
    pic.image = [UIImage imageNamed:[NSString stringWithFormat:@"pic%d.png",i];
    pic.center = CGPointMake(100, 120);
    [self.view addObject:pic];

    }
于 2013-05-10T13:58:51.907 回答
0

每次添加新图片时都必须重新初始化 UIImageView;

  pic = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 50, 75)

在前面加上

pic.image = [UIImage imageNamed:@"pic5.png"];
pic.image = [UIImage imageNamed:@"pic4.png"];
pic.image = [UIImage imageNamed:@"pic3.png"];
pic.image = [UIImage imageNamed:@"pic2.png"];
pic.image = [UIImage imageNamed:@"pic1.png"];

在你的代码中,你应该是洁净的。

于 2013-05-10T14:13:07.827 回答