0

好的,我是 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];
    }
}

这一点,我希望制作一个 UIImageView 网格并将它们保存在 NSMutableArray 中,但屏幕上什么也没有出现。您如何在代码中执行与拖放类似的过程?我意识到我没有合成任何东西,我只声明了一个实例 UIImageView,但我想如果我将声明放在 for 循环中,那么它会抱怨,因为它会创建多个具有相同名称的变量。无论如何使用循环在几行代码中创建大量 UIImageViews 吗?我虽然可能只是编辑用作指针变量标识符的字符串,例如“image1”、“image2”......但我不知道如何使用字符串类型变量作为标识符的名称。

PS - 我搜索了 CGRectMake 程序,参数是(x 坐标,y 坐标,宽度,高度)。

任何帮助将不胜感激 :)。

4

2 回答 2

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];
于 2012-08-22T13:20:59.237 回答
0

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

[self.view addSubview:imageView];
于 2012-08-22T13:16:16.520 回答