【问题标题】:A manual page layout strategy for iOS app instead of storyboardiOS 应用程序的手册页布局策略而不是故事板
【发布时间】:2014-11-21 12:18:44
【问题描述】:

我精通 android,但对 iOS 有点陌生。

我一直在使用 xcode 的故事板布局系统来创建我的初始页面,但我对动态页面创建更感兴趣。

我的要求真的很简单。

我有一个线程,用户在其中选择一个布局,然后我对该页面执行 segue。 但是我厌倦了故事板的复杂性,并且认为必须有一种更简单的方法。

我有可以调用的函数,这些函数将根据我的规范布局特定页面。

在 android 中我这样做:

我在屏幕上有一个布局,其中一个对象定义在屏幕上的特定位置。 然后我只需将我想要的布局连接到特定对象。

与其在故事板页面之间用segues重绘整个页面,这会产生很多重复,我更喜欢更简单的东西。

这是伪代码:

(ui thread)
display root layout (with hook/frame/object to contain subview)
user pushed button in root window to change layout
popup dialog asking which layout
send msg to render code

(render thread)   
switch (whichLayout)
   case A: connect layout A to subview; break
   case B: connect layout B to subview; break
   ...

我有视图、根布局和弹出窗口的构造函数。在 iOS 世界中,我有一个 tableCollection 或一个 gridCollection 作为一个可以被调用来完成工作的类,但是,正如我上面提到的,我正在使用序列重新创建整个显示页面,并且不希望这样做。

我怀疑我遗漏了一些隐藏在故事板下的简单概念。

【问题讨论】:

  • 有点难以理解您在寻找什么功能,但听起来导航控制器可能会有所帮助(也许)?我宁愿使用更多、更简单的视图控制器,而不是使用更少、更复杂的视图控制器。此外,当你切换平台并发现一些看似愚蠢或复杂的东西时,你会本能地与之抗争,试图重新创造你以前舒适的方法。这通常是人们在新平台上发明一些愚蠢复杂的东西的时候。我的建议以“在罗马时...”这句话开头。
  • 我认为我的问题是我不喜欢使用鼠标,或者就此而言使用 GUI。使用故事板来布局应用程序似乎非常复杂。但正如你所说,我目前正在像罗马人那样做。

标签: ios iphone layout


【解决方案1】:

我的麻烦来自于通过 Apple 网站上的教程向我介绍 iOS 开发,这些教程引导我走上了故事板、导航控制器和 segues 的道路。

当我终于闭上眼睛,看着那些漂亮的爸爸和闪烁的灯光,反而理解了程序化的做事方式时,一切都变得清晰了。

回答我自己的问题:解决方案非常简单(尽管我确信所有理智的 iOS 开发人员都会使用导航控制器)。

我可以在现有视图之上添加一个新视图,然后将其移除或隐藏。

说'case A'是我上面的例子是显示一个表格视图:

case A:
    CGRect tableFrame = CGRectMake(0.0,0.0,self.window.frame.size.width,self.window.frame.size.height);
    myTableView = [[UITableView alloc]initWithFrame:tableFrame style:UITableViewStylePlain];
    ... populate the table view ...
    [self.window addSubview:myTableView];
    break;

当切换到另一个案例时,我删除案例 A 表格视图,然后创建我的案例 B 视图,依此类推:

[myTableView removeFromSuperview];
...

我可以隐藏视图而不是创建/销毁,这样我就不必总是使用重新创建它们

[self.window sendSubviewToBack:myTableView];

然后:

[self.window bringSubviewToFront:myTableView];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-04
    • 2016-07-20
    • 2015-11-30
    • 2014-12-25
    • 2013-11-16
    • 2011-12-15
    • 2013-08-08
    相关资源
    最近更新 更多