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中的所有应用程序都以“网格图标”布局出现,我该如何实现这种布局?的主要内容,如果未能解决你的问题,请参考以下文章

苹果桌面上出现一个白色网格图标怎么办?

展开 xib 布局以填满屏幕

适用于 iPhone 和 iPad 的单笔尖

React Native iOS 中的响应式布局

像 iPhone 通讯录应用一样的核心数据搜索?

应用程序图标仅在 iPad Pro(12.9 英寸)第 2 代上不显示