2009-02-03 121 views
11

我應該如何創建一個類似於iPhone上的Springboard(主屏幕)的UI?我想要一個均勻間隔的按鈕和圖片的網格,我可以響應按鈕點擊。如何創建一個像iPhone主屏幕的圖標網格?

UITable是否合適?我應該使用普通UIView並在DrawRect中手動定位圖標嗎?是否有替代方案可以自動均勻地放置按鈕,允許重新組織,並根據iPhone方向調整佈局?

我來自C#/ Winforms背景,現在剛開始使用2.2.1頭部的Open Toolchain開始iPhone開發。

+0

也許你應該提供更多的域信息。並且用您用於開發的框架標記問題。 – Slavo 2009-02-03 17:58:32

+0

「域名信息」?喜歡...應用程序的目的?這將是一個圖標的網格,當按下時,會播放聲音。 有哪些框架?我是新手,不確定所有的名字。我如何確定我正在使用哪個框架? – 2009-02-03 18:06:22

回答

2

您需要將您的圖標(它們是某種UIViews)添加爲您的「跳板」視圖的子視圖。不需要自定義繪圖,而UITable是絕對錯誤的路線。你只需要做數學來正確放置它們(通過設置它們的框架)。

+0

手動數學路線?我曾希望有一個更簡單的方法。好吧。謝謝! 我對UITable並不聰明。爲什麼它不適合? – 2009-02-03 19:59:42

+2

UITable非常適合列表。它自己的行中的每個對象。但是,UIView允許您佈置自己的網格,並在任何需要它們的位置顯示視圖。 – August 2009-02-03 20:53:09

+0

有道理。從.NET的角度來看,UITable更像是一個GridView而不是TableLayout。 – 2009-02-03 21:10:57

1

@八月:我接受了您的建議,並將UIButtons添加爲UIView的子視圖,而不是進一步查看UITable。謝謝!

希望以下代碼可以幫助啓動其他人。我靜靜地在網格中放置了4個按鈕。根據父UIView的邊界和方向放置任何數量的按鈕應該不會太困難。

@implementation IconView 
- (id)initWithFrame:(struct CGRect)windowRect{ 
    self = [super initWithFrame: windowRect]; 
    if (self != nil){ 
    for(int i = 0; i < 4; i++){ 
     buttons[i] = [self buildButton]; 
     [self addSubview: buttons[i]]; 
    } 
    [self reInit]; 
    } 
    return self; 
} 
- (UIButton *) buildButton{ 
    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 60, 60)]; 
    [button setBackgroundImage: [[UIImage imageNamed:@"icon.png"] stretchableImageWithLeftCapWidth:60 topCapHeight:0] forState:UIControlStateNormal]; 
    return [button autorelease]; 
} 
- (void)reInit{ 
    CGRect rect; 
    rect = buttons[0].frame; 
    rect.origin = CGPointMake(5, 5); 
    buttons[0].frame = rect; 

    rect = buttons[1].frame; 
    rect.origin = CGPointMake(70, 5); 
    buttons[1].frame = rect; 

    rect = buttons[2].frame; 
    rect.origin = CGPointMake(5, 70); 
    buttons[2].frame = rect; 

    rect = buttons[3].frame; 
    rect.origin = CGPointMake(70, 70); 
    buttons[3].frame = rect; 
} 
@end 
0

使用Arijasoft的gridView實現。它是一個靜態庫,可以讓你生成網格類型的視圖與回調和委託優化方法

6

我已經寫了一些示例代碼來做這樣的事情。查看我的Tiles博客條目,或者直接下載代碼:Tiles-v1.0.zip

我的代碼將圖標創建爲核心動畫層,而不是UIViews,但確實演示瞭如何檢測水龍頭並允許重新組織圖標。它不處理方向更改。

4

舊的線程,但你應該看看Alan Quartrmain的AQGridView了。

相關問題