1

我创建了一个主视图,并添加了从 UIView 子类化的 9 个 UIMyView。我使用 NSBundle 添加该 UIMyViews 的实例以加载 nib 文件并在主视图控制器中添加子视图,当然所有这些视图都出现在超级视图的左上角,一个隐藏另一个,最后一个可见,我需要以某种方式使用超级视图中的点来定位它们,或者创建类似表格的东西并将 UIMyViews 添加到其单元格中?!

想象一下,您有一张桌子,将 9 张牌放在 3 行 3 列(9 张牌)中。这是我需要实现的。

[编辑] 检查这张图片: http: //www.wpclipart.com/recreation/games/card_deck/cards_symbols/playing_card_symbols.png

我只需要 3 行和 3 列。

任何人都可以建议这种操作的最佳实践吗?

之后我想在拖动、触摸和重新排序等时在这些 UIMyViews 上实现各种动画和效果。

谢谢你。

4

2 回答 2

2

如果要手动添加它们,只需在添加到主视图之前设置每个子视图的框架:

CustomView *view = [[CustomView alloc] initWithFrame:CGRectMake(...)];

与手动设置所有内容相比,有一些“更聪明”的方法可以解决这个问题。iOS6为此包含一些功能,并且还制作了gridviews,例如:

于 2012-07-11T16:51:19.900 回答
2

如果你想遍历所有视图并将它们放置在一个网格中,你可以这样:

    // Array of 9 views    
NSArray *views = [NSArray arrayWithObjects:[[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)], [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)], [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)], [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)], [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)], [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)], [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)], [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)], [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)], nil];

int count = 0;
int maxPerRow = 3;
int row = 0;
float spacing = 100.0;

for(UIView *view in views)
{
    // Only added to tell the difference between views, make sure to import QuartzCore or remove the next 3 lines
    view.backgroundColor = [UIColor colorWithRed:.5 green:0 blue:0 alpha:1];
    view.layer.borderWidth = 1;
    view.layer.borderColor = [UIColor whiteColor].CGColor;

    // position view
    view.frame = CGRectMake(count*spacing, row * spacing, view.frame.size.width, view.frame.size.height);
    [self.view addSubview:view];

    if(count % maxPerRow == maxPerRow-1)
    {
        count = 0;
        row++;
    }
    else
    {
        count++;
    }
}

这会给你这样的东西:

在此处输入图像描述

于 2012-07-11T17:09:53.023 回答