我应该如何创建一个类似于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