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