1

我已经创建了一个主视图,并添加了9我从UIView subclassed的UIMyView。 我使用NSBundle添加实例,使用NSBundle在主视图控制器中加载nib文件和addSubview,当然,所有这些视图都出现在超级视图的左上角,一个隐藏另一个,最后一个可见,或者我需要用超级视图中的点来定位它们,或者创建类似于表格的东西,并将其添加到其单元格中的UIMyViews ?!如何添加UIView子视图对齐像3x3表

想象一下,你有一张桌子,并把9张卡牌定位成3行3列(9张卡片)。 这是我需要实现的。

[编辑] 检查这一形象:http://www.wpclipart.com/recreation/games/card_deck/cards_symbols/playing_card_symbols.png

我只需要3行3列。

任何人都可以建议这种手术的最佳做法?

后来才心里有我想要实现这些UIMyViews各种动画和特效,同时draged,感动和重新排序等

谢谢。

+0

我不太明白你的要求。 – 2012-07-11 16:34:57

+0

我的意思是我需要在iPhone屏幕上对齐3行中的9个视图。 – 2012-07-11 16:51:10

+0

我编辑了我的问题。请参阅图片链接!它在屏幕上只需要3行3列。 – 2012-07-11 16:54:03

回答

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++; 
    } 
} 

这会给你这样的事情:

enter image description here

+0

这真的很完美,简单,我弄不明白。虽然我几乎在那里,但我会解决的,这个位置有一些事情发生,并将一排顶部对齐到另一排顶部。谢谢。也标注了... – 2012-07-11 18:11:20

2

如果你想添加所有手动刚才设置每个子视图的框架添加到主视图之前:

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

有“聪明”的方式来处理这比手动设置的一切。 iOS6的包含了一些这方面的功能还有还有GridView的制作,如:

+0

我已经在超级视图的控制器中执行此操作。但是这样我就必须计算在哪里放卡片。 Thanx为GridView上的参考。但我想我会坚持练习老练,因为我尝试做练习。 – 2012-07-11 16:58:07

+0

我没有使用initWithFrame创建,但使用NSBundle loadNibNamed。如果我尝试加载您推荐的内容,我的视图不会显示在屏幕上。任何想法? – 2012-07-11 17:23:19

相关问题