在26重新启动生活:第10部分-iOS:“ noStoryboard”练习应用。

最近几天,我日常生活中的很多事情都变得非常稳定。 也许太稳定了。

攀登

一段时间以来,这已经变得非常常规,而且效果不佳。 攀爬,训练,为周末的好天气祈祷,疲倦,休息,担心饮食,重复……我相信进步仍在发生,但跌宕起伏如此剧烈,以至于总是很难说出来。

https://github.com/kevintriestocode/noStoryboard

撰写本文时的最新提交: https : //github.com/kevintriestocode/noStoryboard/commit/f1b879ec0bdda70eab3392135d9f9cda4e37b66a

它始于试图理解并希望构建一个程序化UI (从代码而不是视觉故事板生成的用户界面),并且能够合并SnapChat的SnapKit CocoaPod依赖项。 然后,我想(我想回去一步)了解其他更具体的内容:

  • UIView
  • UIVew的addSubview(_ :)方法
  • UIViewController
  • UINavigationController
  • UINavigationBar
  • UINavigationItem
  • safeAreaLayoutGuide —它的尺寸/约束
  • 基本上所有东西都可以放在一起

Swift的很多部分在Xcode中似乎都是拼图。 大多数时候,我最终会拿着两件彼此不合适的东西,但是我花了一段时间才意识到这一点,甚至花了更长的时间才能弄清为什么它们不合适, 甚至花更长的时间来找出我需要的东西弄清楚 他们去哪里以及他们适合什么 。 深深的权利? 大声笑。

我简单的应用的各种面孔。

  • 该应用启动
  • 您有3种选择可以玩
  • 一个“设置” UILabel,它响应UITapGesture并推送另一个ViewController
  • 一个“在列表上的UILabel,它响应UITapGesture并推送一个TableViewController
  • 单击时在紫色和灰色之间切换的UIButton。
  • UINavigation顶部的导航功能也很有限。

到目前为止,我最骄傲的成就是一切都是程序性的。 (仍然很难相信我实际上是在编码!)。 只要看看所有这些漂亮的颜色…

其中的不同部分花了几秒钟才能输入并“正确”,而其他部分则花了数小时才弄清楚,然后他们开始合作并停止破坏我的应用程序。 但是外面的人永远不会仅仅通过查看源代码就知道这种挣扎。

  settingsLabel.snp.makeConstraints {(make)在 
make.centerX.equalTo(屏幕)
make.top.equalTo(view.safeAreaLayoutGuide.snp.top).inset(5)
make.width.equalTo(screen).inset(5)
make.height.equalTo(100)
}

那行以粗体显示永远。 它最初看起来像make.top.equalTo(screen).offset(100) ,它可以工作,但最终有一个奇怪的厚边距:

这样的事情在现实世界中是不可能接受的。 (对吗?)因此,我着手进行修复。 接下来我尝试了make.top.equalTo(navigationController?.navigationBar.bottomAnchor)

但这最终破坏了我的应用程序

因此,我尝试了… 这个和那个以及那个和谷歌错误消息等。

这是一个压力很大的阴霾,所以我不完全记得(或想记住)细节。 但是最终通过大量的互联网挖掘,我发现我将把safeAreaLayoutGuide与SnapKit结合使用。

并且那个讨厌的最高利润是固定的!