我想创建一个 4 x 6 的 UIImageViews 网格,每个网格都包含一个稍微不同的图像。我还希望能够随机选择其中一个实例并更改它的图像。
我的问题是以网格形式设置 UIImageViews 的最佳方法是什么,在每个设置之间执行一些操作,并在设置完成后随机选择 24 个实例中的 1 个。最理想的情况是,我不必一一设置。
提前致谢。
我想创建一个 4 x 6 的 UIImageViews 网格,每个网格都包含一个稍微不同的图像。我还希望能够随机选择其中一个实例并更改它的图像。
我的问题是以网格形式设置 UIImageViews 的最佳方法是什么,在每个设置之间执行一些操作,并在设置完成后随机选择 24 个实例中的 1 个。最理想的情况是,我不必一一设置。
提前致谢。
您可以采用不同的方法,具体取决于您是否要使用 Interface Builder 来布局网格。
一种选择是将 24 个 UIImageView 布局为 IB 中公共父视图的子视图。在 View Attributes 选项卡上,您可以设置一个从 1 到 24 的“Tag”数字来区分您的 UIImageViews。然后在您的代码中,您可以使用 [parentView viewWithTag:tagNumber] 访问每个 UIImageView。
如果您更喜欢以编程方式做事,您可以在 UIViewController 子类的 loadView 方法中循环创建每个 UIImageView。您可以维护一个数组(或对应于行和列的数组数组)作为控制器的属性,并在创建它们时存储对每个图像视图的引用。对于您创建的每个 UIImageView,设置其 imageView.frame 属性以定义其位置,然后调用 [view addSubview:imageView] 将其添加到父视图。
为了您的利益,我会以编程方式进行。
NSArray *myViews = //I assume you can create an array of views
for (int i=0; i<rows; ++i) {
for (int j=0; j<columns; ++j) {
UIImageView *thisImageView = [myViews objectAtIndex:(i*columns+j)];
CGSize size = thisImageView.image.size;
[thisImageView setFrame:CGRectMake(j*size.width, i*size.height, size.width, size.height)];
[self.view addSubview:thisImageView];
}
}
//Later to pick one randomly
UIImageView *myRandomView = [myViews objectAtIndex:(arc4random()%[myViews count])];
[myRandomView setImage:myNewImage];