我應該如何創建一個類似於iPhone上的Springboard(主屏幕)的UI?我想要一個均勻間隔的按鈕和圖片的網格,我可以響應按鈕點擊。如何創建一個像iPhone主屏幕的圖標網格?
UITable是否合適?我應該使用普通UIView並在DrawRect中手動定位圖標嗎?是否有替代方案可以自動均勻地放置按鈕,允許重新組織,並根據iPhone方向調整佈局?
我來自C#/ Winforms背景,現在剛開始使用2.2.1頭部的Open Toolchain開始iPhone開發。
我應該如何創建一個類似於iPhone上的Springboard(主屏幕)的UI?我想要一個均勻間隔的按鈕和圖片的網格,我可以響應按鈕點擊。如何創建一個像iPhone主屏幕的圖標網格?
UITable是否合適?我應該使用普通UIView並在DrawRect中手動定位圖標嗎?是否有替代方案可以自動均勻地放置按鈕,允許重新組織,並根據iPhone方向調整佈局?
我來自C#/ Winforms背景,現在剛開始使用2.2.1頭部的Open Toolchain開始iPhone開發。
您需要將您的圖標(它們是某種UIViews)添加爲您的「跳板」視圖的子視圖。不需要自定義繪圖,而UITable是絕對錯誤的路線。你只需要做數學來正確放置它們(通過設置它們的框架)。
手動數學路線?我曾希望有一個更簡單的方法。好吧。謝謝! 我對UITable並不聰明。爲什麼它不適合? – 2009-02-03 19:59:42
UITable非常適合列表。它自己的行中的每個對象。但是,UIView允許您佈置自己的網格,並在任何需要它們的位置顯示視圖。 – August 2009-02-03 20:53:09
有道理。從.NET的角度來看,UITable更像是一個GridView而不是TableLayout。 – 2009-02-03 21:10:57
@八月:我接受了您的建議,並將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
使用Arijasoft的gridView實現。它是一個靜態庫,可以讓你生成網格類型的視圖與回調和委託優化方法
我已經寫了一些示例代碼來做這樣的事情。查看我的Tiles博客條目,或者直接下載代碼:Tiles-v1.0.zip。
我的代碼將圖標創建爲核心動畫層,而不是UIViews,但確實演示瞭如何檢測水龍頭並允許重新組織圖標。它不處理方向更改。
舊的線程,但你應該看看Alan Quartrmain的AQGridView了。
如上所述,使用UIView和做數學來佈置視圖是最簡單的選擇。
檢查從developer.apple.com https://developer.apple.com/library/ios/#samplecode/PageControl/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007795
根據您的需要選擇示例代碼,您可能不需要使用任何外部框架。
也許你應該提供更多的域信息。並且用您用於開發的框架標記問題。 – Slavo 2009-02-03 17:58:32
「域名信息」?喜歡...應用程序的目的?這將是一個圖標的網格,當按下時,會播放聲音。 有哪些框架?我是新手,不確定所有的名字。我如何確定我正在使用哪個框架? – 2009-02-03 18:06:22