如何初始化UIImageViews等并在屏幕上显示它们:iPhone

时间:2012-08-22 13:13:35

标签: iphone objective-c xcode uiimageview declaration

好的,我是XCode和Objective-C编程的新手,还有一个问题。

我可以使用Storyboard Builder中的拖放功能正常添加UIImageView。然后我可以通过创建与相关ViewController的连接来访问代码,通过控制拖放然后我可以创建一个插座。然后使用@property行在* .h文件中声明它,并在* .m文件中合成。

但是,如果我有一个更复杂的视图,它会花费太长时间并将所有内容拖到屏幕上,如果我想在执行期间更改对象的位置,该怎么办?

我尝试在ViewDidLoad方法中使用它:

NSMutableArray *mutableArray = [NSMutableArray array];
UIImage * pic = [UIImage imageNamed: @"Blue.png"];
for (int x = 0;x<10;x++){
    for (int y =0;y<10;y++){
        UIImageView *imageView = [[UIImageView alloc] initWithImage:pic];
    imageView.frame =CGRectMake(x*23,y*41,32,41);
[mutableArray addObject:imageView];
    }
}

这个,我希望会创建一个UIImageViews的网格并将它们保存在NSMutableArray中,但屏幕上没有任何内容。你如何对代码中的拖放进行类似的处理?我意识到我没有合成任何东西,我只声明了一个实例UIImageView,但我想如果我把声明放在for循环中那么它会抱怨因为它会创建多个具有相同名称的变量。无论如何使用循环在几行代码中创建一堆UIImageViews?我可能只是编辑用作指针变量的标识符的刺痛,例如“image1”,“image2”.....但我不知道如何使用字符串类型变量作为标识符的名称。

P.S。 - 我用Google搜索了CGRectMake程序,参数是(x坐标,y坐标,宽度,高度)。

非常感谢任何帮助:)。

2 个答案:

答案 0 :(得分:1)

您需要将它们添加到子视图中。

[self.view addSubview:imageView];

您可以使用标签来识别个人UIImageView,而不是将它们添加到数组中,这取决于您的喜好。

UIImage * pic = [UIImage imageNamed: @"Blue.png"];
int tagInt=1;
for (int x = 0;x<10;x++){
    for (int y =0;y<10;y++){
        UIImageView *imageView = [[UIImageView alloc] initWithImage:pic];
        imageView.frame =CGRectMake(x*23,y*41,32,41);
        imageView.tag=tagInt;
        [self.view addSubview:imageView];
        tagInt++;
    }
}

然后访问个人UIImageView

UIImageView *imageView = (UIImageView*)[self.view viewWithTag:1];

答案 1 :(得分:0)

您正在保存您在NSMutableArray中创建的所有imageView对象。您需要将它们添加为视图的子视图(在这种情况下,我假设您的视图是UIViewController的视图):

[self.view addSubview:imageView];