2009-02-03 124 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了。

相关问题