我想创建一个4 x 6网格的UIImageViews,每个网格包含一个略有不同的图像。我还希望能够随机选择其中一个实例并更改它的图像。
我的问题是在网格形式中设置UIImageViews的最佳方法是什么,在每个设置之间执行一些操作,并在设置完成后随机选择24个实例中的一个。最理想的情况是,我不必逐个设置。
提前致谢。
答案 0 :(得分:2)
您可以采用不同的方法,具体取决于您是否要使用Interface Builder来布局网格。
一种选择是将24个UIImageViews布局为IB中公共父视图的子视图。在“视图属性”选项卡上,您可以设置1到24之间的“标记”编号,以区分UIImageViews。然后在您的代码中,您可以使用[parentView viewWithTag:tagNumber]访问每个UIImageView。
如果您更喜欢以编程方式执行操作,则可以在UIViewController子类的loadView方法中循环创建每个UIImageView。您可以将数组(或对应于行和列的数组数组)维护为控制器的属性,并在创建它们时存储对每个图像视图的引用。对于您创建的每个UIImageView,设置其imageView.frame属性以定义其位置,然后调用[view addSubview:imageView]将其添加到父视图。
答案 1 :(得分:1)
我会以编程方式为您着想。
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];