好的,我是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坐标,宽度,高度)。
非常感谢任何帮助:)。
答案 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];