我应如何在iPhone上创建类似于Springboard(主屏幕)的UI?我想要一个带有图像的均匀间距按钮网格,我可以响应按钮。
UITable是否合适?我应该使用普通的UIView并在DrawRect中手动定位图标吗?是否有替代方案可以自动均匀分隔按钮,允许重新组织,并根据iPhone方向调整布局?
我来自C#/ Winforms背景,现在刚开始使用2.2.1标题在Open Toolchain上进行iPhone开发。
答案 0 :(得分:6)
我写了一些示例代码来做这样的事情。请参阅我的Tiles博客条目,或者只需下载代码:Tiles-v1.0.zip。
我的代码将图标创建为核心动画图层,而不是UIViews,但确实演示了如何检测点击并允许重新组织图标。它不处理方向更改。
答案 1 :(得分:4)
旧线程,但你也应该查看Alan Quartrmain的AQGridView。
答案 2 :(得分:2)
您需要添加图标(某种UIViews)作为“Springboard”视图的子视图。不需要自定义绘图,UITable是绝对错误的方法。你只需要进行数学计算就可以正确放置它们(通过设置它们的框架)。
答案 3 :(得分:1)
@August:我接受了你的建议并将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
答案 4 :(得分:0)
使用Arijasoft的gridView实现。它是一个静态库,允许您使用回调和委托方法生成网格类型的视图以进行优化
答案 5 :(得分:0)
如上所述,使用UIView并进行数学布局视图是最简单的选择。
检查developer.apple.com https://developer.apple.com/library/ios/#samplecode/PageControl/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007795
中的示例代码根据您的要求,您可能不需要使用任何外部框架。