iphone中的所有应用程序都以“网格图标”布局出现,我该如何实现这种布局?
Posted
技术标签:
【中文标题】iphone中的所有应用程序都以“网格图标”布局出现,我该如何实现这种布局?【英文标题】:All the app in iphone appear in a "grid icon" layout, how can I achieve that layout? 【发布时间】:2010-02-12 03:07:34 【问题描述】:当你第一次打开 iphone 时,所有的应用程序都是“网格图标”类型的布局。如果你有太多的应用程序,用户向右滑动,新的视图就会出现,所有的应用程序都会再次出现在“网格图标”布局中。你们能指出我在哪里可以实现这样的设计吗?代码将不胜感激! 我确实尝试了一些东西,这就是我到目前为止所得到的。 在我的 delegate.h 类中,我有
UITabBarController *tabBarController; 视图1 *视图1; //继承自UIViewController 视图2 *视图2; //继承自UIViewController
在我的 delegate.m 类中,我有
- (void)applicationDidFinishLaunching:(UIApplication *)application
tabBarController = [[UITabBarController alloc] init]; //Create a tab bar
view1 = [[View1 alloc] init]; //Create the first view
UINavigationController *navigationController1 = [[UINavigationController alloc] initWithRootViewController:view1];
view2 = [[View2 alloc] init]; //create the second view
UINavigationController *navigationController2 = [[UINavigationController alloc] initWithRootViewController:view2];
tabBarController.viewControllers = [NSArray arrayWithObjects:navigationController1, navigationController2, nil];
[window addSubview:tabBarController.view];
[window makeKeyAndVisible];
所以现在我有两个加载 view1 和 view2 的选项卡,它们都实现了 UINavigationController,这意味着如果我创建另一个 view3,当我 pushViewController 时,我可以创建像 iPhone 一样的动画效果。然后在view3.m中当我尝试返回时,我可以popViewController。但是我无法实现的是,让我们看看每个视图我会有 4 个图标,所以当我从数据库查询回来时,我知道我必须显示 12 个图标,这意味着 3 个视图。但我只知道运行时的信息:(。没错,我确实有view1、view2和view3作为view1.m、view2.m和view3.m。如果图标的数量超过12,意味着我需要另一种观点,那我就完蛋了。请帮忙
【问题讨论】:
这就是所谓的“刷屏”。太累了,无法发布答案,抱歉,但我猜你会有回复(如果没有,我会)。有时,知道您想要实现的目标的名称非常有用。 抱歉我的无知,但我的问题不是关于如何实现滑动以在视图之间移动。我已经实现了 :( 叹息 .... 【参考方案1】:我会看看Three20,这是一个作为 Facebook 应用程序主干的开源框架,以及许多其他应用程序。在其中,他们有一个名为TTLauncherView 的类,它与当前(撰写本文时)Facebook 启动器完全一样。它与 iPhone 主屏幕的功能非常接近,包括页面滑动、重新排序、摆动和删除。
【讨论】:
我会更深入地研究它,但乍一看,它被搞得一团糟。 :( 拥抱three20一开始很困难,但从长远来看会让你的生活更轻松。如果您的项目不太顺利,我建议您切换到 three20 风格的应用程序。如果您已经走得很远,那么也许您可以提取相关部分作为您自己实施的指南【参考方案2】:@Julien 不完全正确。您所说的是添加到 UIScrollView 的视图。
Here's an example of a scroll view
在此处搜索 UIScrollView 或查看 Apple 的示例(参见上面的链接)。
一旦实现了 UIScrollView,就可以将 UIButtons 或 UIViews 添加到以 Grid 格式布局的 scrollView 中。这是example gridView project。还有其他人在这里搜索或谷歌找到它们(例如 iPhone GridView 或 iPhone Open Source GridView)
【讨论】:
非常感谢您的回复,我一定会看看的 gridview 项目,无法运行。总是被未捕获的异常终止。你能运行它吗?【参考方案3】:这里的很多解决方案似乎都被夸大了。这是我的做法。创建一个 UIViewControllerTemplate,其中包含 4 个(或更多)自定义按钮。所以每次你创建一个新视图时,你都会有一个看起来像“网格”的布局
-(void) initButtons
//button size 100 X 100
int shiftx = -5;
int shifty = 15;
(self.button1).frame = CGRectMake(40-shiftx, 50-shifty, 100, 100);
(self.button2).frame = CGRectMake(180-shiftx, 50-shifty, 100, 100);
(self.button3).frame = CGRectMake(40-shiftx, 250-shifty, 100, 100);
(self.button4).frame = CGRectMake(180-shiftx, 250-shifty, 100, 100);
-(void) viewDidLoad
[self initButtons];
[self.view addSubView:self.button1];
[self.view addSubView:self.button2];
[self.view addSubView:self.button3];
[self.view addSubView:self.button4];
[super viewDidLoad];
【讨论】:
【参考方案4】:只是为了消除这个话题,Apple 现在有一个UICollectionViewController
来实现网格效果。我会通过将其放置到附加到UIPageViewController
的水平UISCrollView
中来实现它。
【讨论】:
以上是关于iphone中的所有应用程序都以“网格图标”布局出现,我该如何实现这种布局?的主要内容,如果未能解决你的问题,请参考以下文章