Tag: 100daysofcode

迅捷100天:项目2 –点击或按住计数器

环境:Swift 4 /日期:2 /日期:2017年10月18日/时间:3小时 我学到什么: ・长按手势 ・计时器(在此不使用) Github原始码:HERE 小知识: 怎么处理Long Press这个小玩意儿呢〜 从Storyboard的右下方,搜寻长按手势,紧接着拖曳到你要的页面上,长按就会显示在页面的最上方,如下图。 这个的动作的意义是“将Long Press Gesture元素放置到可爱的“ View”上。。欸等等〜但我们想要做的是跟Tap或Hold按钮绑在一起。 我们先进入第二步骤,后续再做说明,怎么绑在button上。 2.替Long Press Gesture拉一个IBOutlet至相对应的viewController,同时替Tap或Hold拉一个IBOutlet。 @IBOutlet var longPress_Outlet:UILongPressGestureRecognizer!@IBOutlet弱var TaporHold_Outlet:UIButton! 3.前往viewDidLoad(),放置以下代码: TaporHold_Outlet.addGestureRecognizer(longPress_Outlet) 这里,我们将成为TaporHold_Outlet运用“ addGestureRecognizer”把longPress_Outlet加进来。因此原本在Storyboard的时候, “将Long Press Gesture元素放置到“ View”上 ,,完成上面的步骤,“将Long Press Gesture再放置到TaporHold的按钮上」。 心得: 简单的事情考虑得很复杂,可以发现新领域,把复杂的现象看得很简单,可以发现新规律— —牛顿 这个专案其实没有很困难,但在处理Long Press Gesture时,我想得太复杂了! 为什么? 一开始手势的部分,添加得还算顺利,之前有玩过一两次,老样子没太大变化,但我深刻记得上回在研究手势的时候,需要非常多种类的手势,并且牵涉到整个页面的移动,滑动,并且不像这般拉个outlet&action马上搞定,非常烦人,更该死的的是我还失败了,后来暂时放下这块研究别的部分,不过基本的方法还是没问题,所以顺顺利利的添加了outlet&action。 然后,我进入了想太多境界! 上面“我学到什么:”的部分,有提到Timer,为什么呢?如刚刚所说,接下来要处理Long Press Gesture @IBAction,我打算“ Long Press怎么会知道要连续加数字呢?” 因此,我自作聪明的灵机一动,timer就决定是你了!var timer .. blabla… 反而把code变得很复杂,我又觉得好像不应该第二天就这么复杂((又自以为了lol,重新开始询问谷歌大哥找答案,结果发现只要把原本处理逻辑的code拷贝到Long […]

Swift 100天:项目6 –将数据传递给另一个

环境:Swift 4 /日期:6 /日期:2017年10月22日/时间:1小时 我学到什么: ・ Segue:将数据传递给另一个视图控制器 ・隐藏式键盘 ・导航项目 Github原始码:这里 小知识: 1.导航项: 我的情节提要,主要由导航控制器,连接着第一视图,再由完成连接到第二视图。但是如果少做下面这个步骤,便会无法添加标题,也只会有<返回,而不是<第一视图。 导航栏连结方法:在Second View中添加一个“ Navigation item”,即能替这页面加上Title&Custom back button。 2.关闭键盘 如何「点击画面其他位置,可以把键盘收起来」? 扩展ViewController {func hideKeyboardWhenTappedAround(){ 让我们点击:UITapGestureRecognizer = UITapGestureRecognizer(目标:自我,行动​​:#selector(dismissKeyboard)) view.addGestureRecognizer(点击) } @objc func dismissKeyboard(){ view.endEditing(true) } } 这是已更新至Swift 4的版本,只要替代特定的viewcontroller加载以上extension,并在viewDidLoad中加上这一小行即可: self.hideKeyboardWhenTappedAround() 心得: 习惯之始,如蛛丝,习惯之后,如绳索。 迈入第六天,似乎已成习惯,写起来不那么别扭,一边当成日记纪录此刻心情。 小时候,老师总会叫我们写日记,认为是练字,练文笔,练口才,当时可能还没那么多未来展望,工作规划,人生期许这种样的压力,顶多是风花雪月贺尔蒙作祟的矫情。 但为什么长大后,越来越少人有写作的习惯呢? 褪去求学时期的蒙懂,添重旁人期待的负载,有别儿时的练习,如今更是心情抒发与自我观察的良帖。 一个人要成长,而不是专业上,抑或心灵上,适时回头观望自己的人生是怎么走过来的,未来又应该往哪里去,似乎是必经之路,也可能是转捩点的开端。 在自我观察的同时,我经常给自己极大的期许,振奋的精神喊话,谱出美好的未来,我相信只要做对的事,骐骥一跃,不能十步;驽马十驾,功在不舍,一步一步,最终会达到心中的高度。 看着镜子中的狮子,即使小猫,也拥有如狮子般高亢的自信与勇气!

Swift 100 Days:Project 22 –通过“协议”和“委派”传递数据

环境:Swift 4 /日期:79〜84 /日期:2018年1月8日/时间:2小时 我学到什么: ・研究方法 :在Swift中的视图控制器之间传递数据(扩展) ・尝试4.通过委托传回数据 ・使用协议,玩得开心!!! 小知识: 传值 , Pass Data这档事 ,无论是View Controllers之间,还是View Controller跟Model之间,都是每天都会处理到的问题。处理起来不困难,但背后的理论微庞大且广泛(好像每个概念都是如此😜)。以下推荐给大家几个资源: 传递数据: iOS:将数据从模型传递到控制器的三种方法 在iOS Project中采用MVC medium.com 如何:在Swift中的视图控制器之间传递数据(扩展) 撰写者:Reinder de Vries,2017年7月19日,在App Development中当您的应用程序具有多个用户界面时,您需要… Learnappmaking.com 协议和委托: Swift 3中的协议简介 一旦这对您有意义。 很美丽。 medium.com 在Swift中通过委托传递数据 0至100实际快速项目示例 medium.com 心得: Kobe,是我一直以来最爱的球星,偏执,追求完美,有一点的古怪,难以相处,但就是那唯我独尊的态度,引导了他的传奇之路。 人们来来去去。 传说仍然存在。

Swift 100天:项目5 –提示计算器

环境:Swift 4 /日期:5 /日期:2017年10月21日/时间:1.5小时 我学到什么: ・ MVC模式 ・模型中的手柄计算 ・键盘添加“完成”按钮 ・从滑块获取价值 Github原始码:这里 小知识: 开发者踏过超级新手之后,下一步即要针对架构的问题,先推荐给大家文章 建立MVC: Model-View-Controller (简称MVC)是Cocoa框架的一部分,并且毋庸置疑是最常用的设计模式之一。它可以帮你把物件根据工作进行划分和归类。 作为划分依据的三个基本职责是: 模型层(Model):存储数据和定义如何操作这些数据。 透视层(View):负责模型层的显示,和负责用户的互动,一般来说都是继承自UIView这个父类别。 控制器(Controller):控制器是整个系统的掌控者,它连接了模型层和数据层,并且把数据在视图层展示出来,监听各种事件,负责数据的各种操作。 实际面:Controller的部份,明显的肥大,那是因为他除了要对事件导致相对应的逻辑判断之外,还要处理到一些应该是View要处理的问题。因此,许多iOS开发者会选择MVVM,在MVC架构之上,MVVM将阶层切分得更干净,有兴趣请看浅谈MVVM架构,这边就不多余述。 心得: 每个人都会累,没人能为你承担所有悲伤,人总有故障要学会自己长大。 欢乐星期六,白天狂嗑冰与火之歌,无法自拔,晚上花一小时通勤回老家(周末都会回家一趟),优先不中断健身房,固定的运动,坚定的工作,稳定的心情。只是现在,又已深夜,还在啃我的100天;( 我感觉就像这只狗…让我睡觉。 随便我吧。 突然发现,好像没有放松的空间。 总之,今天有点累,给自己压力,最终还是完成任务了,至少入眠前,是满足的释放。思考今天是不是不应该放纵,买了白天的自由,换来晚上的落魄。 近期在找工作,原本只打算选个实习也罢,一边准备出国工作/研究所,但身为工作狂代言人之一,面试后获得一些报价后,有了疯狂的想法:一个正职+一份实习+原本的实习+ Chatbot专案。 有约莫三日的考虑时间,好好想一想,评估一下,毕竟还是别在还没立起自己的招牌前就先把招牌砸了!有些不久即会初步完成,有些则是才刚开始,权衡了时间,如果没有意外,是可以扛下的,加速自己的成长。 说实话,还是有点担心自己做这样的决定,因为这种无敌密集的生活,也不是第一次,以往,虽然很累很干,但总是能咬牙撑过,而那些事情往往是自己非常讨厌的杂事工,如: 在学校大四期间,毕业委员会要每个系都推派一个毕委员会代表(标准累死杂事工人),理所当然没人有意图,我只好硬着头皮去了,接着各个的时候去了团照组,本来应是可以轻松的一组,只要要么你不是总召集,大家都重复同样的心态,所以我还是硬着头皮当了,接下来非常痛苦的度过一年,处理全校几千人的团照。 例子,不胜枚举,总是有这样的使命感,只要觉得生命没被填满,心情总是空。毕竟,生命如流水,只有在它的急流与奔向前去的时候,才美丽,才有意义。

迅捷100天:专案1 –点数计数器

环境:Swift 4 /日期:1 /日期:2017年10月17日/时间:1小时 我学到什么: ・ Mainstoryboard配置标签和按钮 ・基本的 ・客制导航栏 Github原始码:这里 小知识: 仔细看看这个app,跟一般的app有什么不一样? 简单来说,正常的Navigation Bar是这个模样: 但这个app则是这个样子,像是根本没有Navigation Bar一样: 发现哪里不一样了吗?没错,Border消失了! 这是怎么做到的呢? 在viewDidLoad里面,加入以下程序码,就可以顺利把Border消除: navigationController?.navigationBar.setBackgroundImage(UIImage(),用于:.default) navigationController?.navigationBar.shadowImage = UIImage() 原理可以参考这篇文章:iOS开发小结— UINavigationBar设置shadowImage 心得: 如果我们想到达终点,则应该从搜索起点开始。 这只是第一天,虽然是个很简单的app,尤其对一个已经学了一年Swift的人来说,但一阵兴起,开始埋头进入神圣的“ 100 Days of Swift”,其实就是希望自己,放下所有,回到原点。 为什么想回到原点? 最近的在各式专案中奔波,在架构中跳来跳去,却一直一个萝卜一个坑,这个还没搞懂,那个又来捣乱。 该死的MVVM? 故事板还是没有? 面向对象还是协议? 自定义导航栏和标签栏? 真正的冬青雅致Alamofire吗? 最后,Swift 4来了。 ((最近看太多冰与火之歌大声笑。总之,好多问题,好多答案,更多疑惑,更难选择择一。 那究竟为什么,变得如此困难,如此挣扎?好像进入强迫症的心灵,在镜子中看着自己,好想逃,却出不去。 当初,好一个当初。自己在一开始接触Swift的时候,那股热情与赤诚,好像心有所属了那般。每天只想多与它多相处片刻,因为每分每秒都学习到更多,我可以认真认识自己成长。 但就如所有梦,没有坏人就没有情节,之前看了一篇文章:学编码很简单,但想要靠它吃饭你必须经过这4大阶段,这张图我越来越有感: 超级绝望!信心超低!能力…… “放下吧!”我告诉自己。 如果要达到终点,我们应该从寻找起点开始。 找到最初的感动,拾回成长的快乐,重新站稳步伐,你会走更远。

Swift 100 Days:Project 21 –通过手势和Youtube(如播放器和详细信息)放松Segue和NSNotification

环境:Swift 4 /日期:69〜78 /日期:2018年1月3日/时间:30小时 我学到什么: ・ NSNotification进行一个画面内“三个ViewControllers”的通知与重构・手势利用NSNotification解决冲突,滚动查看并平移手势 ・ Youtube喜欢播放器和细节 ・放开Segue 小知识: 1.展开Segue展开 Segue又称为返回Segue,在 Project 6的小知识有聊到,那时候还不甚全然清楚,后来才发现真是重要且好用。 情境: 您的App一开始不强制用户登录,但一旦要使用特定功能,如:留言,就必须得先登录。 这时,你要引导使用者进入登录画面,登录了,然后呢? 1.呈现方式到首页,让使用者再度从头寻找留言画面 2.放松Segue至刚刚的留言画面很明显的地,第二个是更好的用户体验。 2. NSNotification NSNotification俗称通知,一般来说是一个物件(发布者)向其他物件(订阅者)发送消息,Apple本身对于通知的使用也蛮连续的,像是Keyboard的弹起与收起UIKeyboardWillShowNotification / UIKeyboardWillHideNotification 。我在这个专案中,是使用在ViewControllers之间的监听来触发手势。 首先,开发者要先想清楚,是谁要听谁?又要听什么东西? 以我的案例,孩子要听父母的var enableChildScroll ,当父母的var enableChildScroll = true时,孩子的TableView, TextView or any scrollableView.isScrollEnable = true 。 也就是说,小狗眼前摆一盘食物,巴巴地望着主人,等待主人发号施令:「吃! (var enableChildScroll = true) ”,狗狗才可以吃(.isScrollEnable = true) 。 那我们就开始编码吧! 观察者:Child;被观察者:Parent 1.在ChildVC的ViewDidLoad做一个addObserver的动作,顾名思义,开始观察啰 [[子]] <> NotificationCenter.default.addObserver(自己,选择器:#selector(catchScrollNotification(notification […]

Swift 100天:项目24 –如何仅将一个ViewController旋转为横向方向?

环境:Swift 4 /天:88 /日期:2018年1月12日/时间:6小时 我学到了: ・现在旋转很快就变得愚蠢。 为什么? 👇 ・由于要旋转的特定视图控制器中嵌入有标签栏或导航栏,因此没有简单的方法(如简单地调用一个函数)来旋转它。 ・如果只有一个视图控制器而没有选项卡栏或导航栏,这在实际项目totally中是完全不现实的,则可以根据是否允许旋转,将’shouldAutorotate’覆盖变量设置为true / false。 如果您打算像我一样只在一个视图控制器中进行旋转,则可以开始谷歌搜索并找到以下资源: 如何在iOS Swift中仅将一个View Controller旋转为横向 仅使用纵向创建整个iOS Swift项目可能会很棘手,而当您的应用程序远远落后时,突然之间… www.jairobjunior.com 这是一篇很棒的文章,只有一个大问题: 完全过时!!! 我记得它是用Swift 2.3编写的,过时的代码几乎无法使用。 👊平视👊:在下面的示例中, 该应用程序仅在所有视图控制器中允许“纵向”,只有一个允许“ allButUpsideDown” 。 确保您的应用也适合这种情况,或者稍微转移代码以适应这种情况。 1.首先,您需要确保“设备方向”看起来像这样,这意味着仅选中“纵向”模式。 2.将以下两个功能添加到AppDelegate中,以帮助您处理上述在导航栏/标签栏中嵌入的情况: 来源: 如何仅将一个View Controller旋转为iOS Swift中的横向方向

一个普通人的编码之旅

我决定着手#100DaysOfCode开始新的一年。 通过其他推文,我看到了许多雄心勃勃的目标(通常涉及找到开发人员职位)。 我的目标虽然没有那么崇高,但我想与其他像我一样悠闲地学习编码的人分享。 我没有任何近期的职业目标,但我确实认为知道如何编码将变得越来越有价值。 我衷心希望开发人员与用户之间的界线继续变得模糊,并且我相信我会找到方法将我从学习中学到的知识应用于日常工作中。 我的旅程开始了,因为我确定还有很多其他人。 我从Codeacademy开始工作,完成了一些挑战,被困住并离开了几年! 但是,嘿,没关系。 后来我遇到了FreeCodeCamp,并决定再次尝试编码。 事情几乎都以同样的方式进行,充满挫败感的时刻让我将其搁置很长时间。 对我来说起作用的是还有其他需要切换的地方。 我在iPad上启动了Swift游乐场。 我确定有人会觉得它很幼稚,但是在编码的背景下,我只是个婴儿。 我真的很喜欢这样的事实,当我的代码无法正常工作时,很容易逐步了解错误所在。 当然,现在我已经找到了其他语言可以做到这一点的工具和技巧,但是一开始内置此功能确实很有帮助。我还发现,在两种类型的教程之间进行切换可以帮助我思考不同方面的问题。角度。 总是有一些小怪癖没有得到明确的解释,但是当您以略有不同的方式看到相同的信息时,便可以建立更直观的联系。 每个人对学习哪种最佳语言都有不同的看法。 老实说,我想担心这些事情为时尚早。 但是有几个人向我赞扬了Python的优点,所以我想我会看一下。 我还想要Raspberry Pi,并记住它使用Python。 这使我参加了麻省理工学院的EdX课程, 《计算机科学入门和使用Python编程》 。 尽管他们强调这不是一门Python课程(而是一门使用Python演示核心原理的CS课程),但这似乎是一个不错的起点。 现在,事情真的开始融合了。 我见过for和while循环,并学会了迭代。 我知道if语句和布尔运算符。 了解如何以另一种语言使用这些技术并了解异同是非常有教育意义的。 我会说,由于在语言之间进行切换,我在语法上有些挣扎,但是最终这是一件好事,迫使我更加努力地记住正确的语法。 本周,我实现了几个重要的里程碑,使我成为了一个很好的#100DaysOfCode。 首先,我完成了FreeCodeCamp上的所有基本算法脚本挑战。 哇,我认为那将永远不会结束。 我迷失了绝望的放弃次数,但稍后会再次提出并找到解决方案。 我想我克服了对方法的恐惧。 从一开始,解决方案总是使用某种基本为您完成挑战的方法,而不是构建一些冗长的算法来逐步解决问题,这似乎一直是不公平的。 我也被吓倒了,因为我永远无法记住所有可用的方法,所以我只是不想使用它们。 而且,它们通常是一个黑匣子-很难确切地了解一种方法在特定情况下会做什么。 但是,不仅学会了通过测试,还学会了尝试一些不同的方法并使自己对使用方法更加满意。 我的另一个重要里程碑是在MIT课程的第3周结束时通过了问题集。 问题基本上是要开发一款像a子手一样的游戏。 老实说,我认为这将花费我几个小时,而且我想知道我是否学得足够好,足以应付如此艰巨的任务。 我最了解的是坚持。 我的第一次尝试没有效果? 当然不是,它几乎永远不会。 调整代码。 找出问题所在。 重新阅读一些笔记。 真的无法消除特定的错误吗? 破坏代码并采用其他方法-解决问题始终是一种以上的方法。 令我感到惊讶的是,我能够整理出一些实际上是交互性的代码,而最好的是没有办法作弊,这使我自己找到了解决方案,因此我为自己的全部代码而感到自豪自己的工作。 我议程上的下一件事是MIT课程的期中考试。 在完成之前,我将尽量避免使用其他语言。 这是有时间限制的考试,因此我不想浪费宝贵的时间试图记住我是否需要分号或逗号。 我真的不知道会发生什么,但希望一切顺利。 […]