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

相關問題