Tag: Iosinternship

作为iOS开发人员实习生的12周—第十周(转换为全日制),十一,十二

我很高兴地宣布,在第10周内,我接受了加入团队的邀请,成为初级iOS开发人员☺️! (*我原本打算在2018年8月/ 9月发布这篇文章,但生活受阻:D。我现在是Linkedin的REACH软件工程师学徒,期待有关此的近期文章) 这是我在10到12周内学到的一些东西: 错误烤面包机 您可能想知道,什么是错误烤面包机? 这是一个自定义视图,当触发指定的错误时,该视图将从屏幕底部向上滑动。 错误烤面包机向用户显示一条消息,然后烤面包机向下滑动并消失。 之所以称其为烤面包机,是因为其行为与从烤面包机中弹出的烤面包非常相似! 在此示例中,由于必须选择三明治样式才能前进到下一个屏幕,所以会触发错误烤面包机。 这被制成自定义UIView,因为它在几个屏幕上使用。 错误烤面包机的动画也封装在UIView中。 可以重复使用此UIView,而不必在需要此错误烤面包机的所有屏幕上重复相同的代码。 选项集 这里发生了很多事情。 这是自定义formfieldViews(可重用的自定义UIView)的stackview。 如果输入有效,则会出现一个选中标记。 如果输入无效,则出现X,以使用户知道输入无效。 如果用户点击一个表单域,则其下划线将为深色。 用户导航出该表单域后,下划线颜色就会消失。 如果输入无效并且用户导航离开,则下划线变为红色表示输入无效。 选项集用于表示表单域的状态。 选项集很有趣,因为可以将这些值组合起来以表示状态。 例如,如果字段输入有效(原始值4)并且用户当前正在与文本字段(聚焦状态)(原始值2)进行交互,则有效且聚焦的文本字段的总原始值为6。 国家必须被赋予价值。 状态可以存储在数组中 在updateStyle中,它的调用函数可更新和设置bordercolor和图像的动画 一个示例是处于聚焦状态(当用户与表单域进行交互时)(使用RxSwift): 使用三元运算符-如果正在编辑文本字段,则状态为焦点,否则状态为焦点 这就是本系列的全部内容! 谢谢您阅读🙂 在下面通过👏表示赞扬您的支持,在Twitter上关注我的iOS开发者之旅,并在Twitter上与我联系

作为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