Tag: 女人代码

作为iOS开发人员实习12周-第五周

我做了一个演讲,使用iPad应用程序参加了公司的野餐! 先进的斯威夫特 我在Chris Eidhof先生的Advanced Swift上做了30分钟的演讲。 我学到了很多关于Swift语言功能的知识,甚至还了解了诸如for循环之类的东西在引擎盖下如何实际工作的知识。 我写了大约八页的笔记,并创建了一个幻灯片,其中包含28张幻灯片以准备演示文稿。 我在iOS部门公司会议上作了介绍。 在演讲过程中,我很高兴意识到书中有些东西甚至连高级的iOS工程师都不知道,因为没人知道那里的一切,这没关系! 在演讲开始的那几天,我非常紧张,最终进展顺利。 除了在第一张幻灯片中我列出了错误的作者之外……–我只是在检查大家是否都在注意😅LOL jk。 事后看来,将演示文稿摆在其他演示文稿之前,以在真正的演示文稿之前捕获此类错误是一个好主意。 在iPad应用程序上工作 在本周之前,我之前从未从事过iPad应用程序的开发,因此有机会获得如此激动! 我注意到的唯一非常明显的区别是,iPad的屏幕尺寸显然比iPhone😂大。 当我使用iPad模拟器运行该应用程序时,它比实际的iPad设备要慢得多。 请务必注意这一点,因为该应用程序的某些错误在模拟器中并不明显,而在iPad设备上则显而易见。 —始终在设备上测试应用程序。 这是我本周了解到的一些信息: UIVisualEffectView UIVisualEffectView是用于创建模糊效果的对象。 上面的图片是一个模态UIView,在UIView上带有ImageView。 请注意x按钮旁边的模糊程度如何变暗,这是因为此模式UIView后面有一个深色的菜单栏。 首先创建一个具有模糊效果的UIView。 使用阴影实现灰色模糊效果 如果您查看此blurView,它具有灰色。 它是blurView后面的白色。 应该是白色的吧? 那么这是怎么发生的呢? 无法为此模糊效果设置颜色。 这是通过将阴影添加到模态呈现的UIView并将阴影半径设置为一直延伸到屏幕边缘来实现的。 动画阴影看起来要平滑得多。 公司野餐 Fuzz的野餐是在前景公园。 很高兴认识该公司更多的人,并通过热狗,汉堡和饮料与他们聊天。 我很高兴Fuzz拥有如此轻松的活动,使我能够在轻松的环境中与同事保持联系。 据预测,雷雨将在八点开始暴风雨,但它来得有点早,所以我们都去了附近的酒吧。 这是结束一周的愉快方式。 再见第五周,第六周你好!

作为iOS开发人员实习生的12周-第九周

第9周真是令人兴奋! 我参与的一个项目已经发布,当然我也学到了新东西,我将在这里分享一些内容: 项目发布 我参与开发的面向消费者的iPad售货亭系统已在旧金山正式发布! 该应用程序用于为快速/休闲连锁店点餐/领取食物😊 建立消费者使用的东西真是太了不起了,我为此而活。 我等不及要把信息亭系统扩展到其他城市了! 我也很想去旧金山一探究竟 为成功发布而欢呼雀跃! 在StackView中对组件进行动画处理 如果输入无效,我必须设置一个错误UILabel动画,以在textField下面显示一条错误消息。 错误标签应来自无效输入下方,并在两秒钟后进行动画备份。 在上面的示例中,电子邮件字段不正确,因此错误UILabel应该动画,并在两秒钟后消失。 每个字段都是可重用的自定义UIView。 在每个字段中管理状态以验证输入。 errorLabel位于自定义UIView内,最初被隐藏并限制在自定义UIView的边缘 输入无效时,自定义UIView的高度将更新为初始高度的2倍 UIView.animate用于取消隐藏错误标签,并将errorLabel设置为UIView底部的动画 当在stackView中扩展不同的组件时,必须将发行版设置为以下内容, 否则它不会扩展并将下层的view向下推 stackView.distribution = .fill按比例 隐藏 当隐藏并取消隐藏UIView时,如果考虑一下,似乎只是在更改Alpha。 (0不透明度将不显示任何内容,而1的不透明度是完全不透明且可见的。尽管isHidden和更改alpha不透明度不能一起用于隐藏和取消隐藏视图。 例如,如果UIView用.isHidden隐藏,则.alpha更改不会取消隐藏它。 myView.isHidden = true myView.alpha = 1。 //这不会取消隐藏视图//以下将隐藏并取消隐藏myView.isHidden = true myView.isHidden = falsemyView.alpha = 0 myView.alpha = 1 在UILabel上填充 我必须使用一些填充文本和背景颜色,这些颜色从屏幕的左边缘一直延伸到屏幕的另一侧和边缘。 UILabel上没有内置的可自定义填充/插入。 显而易见的答案是将UILabel放在容器UIView内,并约束标签,以使标签在容器视图内具有填充。 虽然我无法将其用于由可重用的自定义UIView组成的stackView。 意见的顺序很奇怪。 即使容器视图是在错误UILabel之前添加的,并且错误标签已添加到容器中,但它仍显示在UILabel的顶部,完全遮盖了UILabel。 我在stackOverflow上的UILabel上发现了这个强烈的填充扩展,它起作用了: 第9周就这些了! 感谢您的阅读! 在这里阅读有关iOS开发者实习的第7和第8周的信息 […]

作为iOS开发人员实习生的12周-第七周和第八周

模拟数据 有时功能需要尚未从api获得的数据。 例如,当构建数量步进器(使用户能够增加/减少一件商品的数量)时,需要最大数量,例如,最大数量为4杯矮胖的玉米炖煮的食物。 除非您有能力提供大量产品,例如400杯矮胖的玉米炖汤,否则建议设置最大数量限制! 设置api后,maxQuantity属性将在ProductOption对象中。 所以自然地,我为ProductOption添加了扩展: 我发现最后一个选项对我的用例来说是最简单的。 只需确保添加TODO注释即可提醒自己这是一个模拟,并在获得真实数据后将其删除。 您不想将模拟数据推送到生产环境中。 更新约束 SnapKit具有用于创建约束的.makeConstraints。 这周我发现了.updateConstraints。 顾名思义,它可以更新约束。 例如,在单元格中,如果产品具有图像,则应通过将imageView高度限制为适当的高度来显示图像。 而如果产品没有图像,则imageView高度不应显示imageView。 imageView高度应为零。 重制约束 .updateConstraints更新特定的约束,并保持其他约束不变。 .remakeConstraints完全重新制作了约束,因为它将使用新约束并完全忽略旧约束。 动画制作 产品设计师向我发送了我必须制作的动画。 我必须将viewControllerA的contentCard稍微收缩到前台,并在屏幕底部同时模态显示一个子viewControllerB的contentCard。 制作起来很有趣。 动画还必须正确定时,有点挑剔。 首先,没有内置的方式来延长以模态方式呈现viewController的持续时间。 动画约束也可以伪造模态呈现。 UIView.animate可用于设置持续时间。 CustomizationsContainerView.snp.updateConstraints {contentCardContaineris的更新///顶部位置已更改并设置了动画,从而导致出现了模态演示。update.top.equalTo(contentCardContainer)} UIView.animate(withDuration:0.2,delay:0.1,options:[.curveEaseOut ],动画:{self.view.layoutIfNeeded()},完成:无) 轻按contentCard的关闭按钮,应将先前缩小的viewControllerA的contentCard放大到其原始大小,同时关闭viewControllerB。 func closeButtonPressed(){customizationsContainerView.snp.updateConstraints {update inupdate.top.equalTo(contentCardContainer).offset(view.frame.size.height)} UIView.animate(withDuration:0.3,animations:{//.identity设置contentCard返回其原始大小。self.contentCard.transform= .identity},完成:无)UIView.animate(withDuration:0.3,延迟:0.1,选项:[。curveEaseOut],动画:{self.view.layoutIfNeeded()},完成:nil)} 感谢您的阅读! 在这里阅读有关iOS开发实习生的第六周的信息 在下面通过👏表示赞扬您的支持,在Twitter上关注我的iOS开发者之旅,并在Twitter上与我联系 丽莎·姜(@imnotlostrui)| 推特 来自Lisa Jiang(@imnotlostrui)的最新推文。 #iOSDeveloper实习@fuzzpro //我希望改变世界…… twitter.com