Tag: 编程

与React Native中的Debug和Release不同的iOS构建配置

默认的iOS构建配置Debug和Release可能一开始就足够了,但是迟早您可能需要扩展应用程序中的构建配置数量。 尽管这在本机开发中非常简单,但是不幸的是,在React Native中却并非如此。 构建配置 要管理构建配置,请转至Xcode项目设置([PROJECT]→Info): 您可以通过复制现有构建配置轻松地添加新的构建配置。 用于开发的重复调试配置以及用于测试飞行和App Store构建的发布配置。 您也可以通过快速双击任何配置来重命名。 调试与发布 调试配置无需任何代码优化即可构建完整的符号调试信息,以方便调试应用程序。 在发行版配置中,代码执行得到优化,并且构建中不包含符号信息,这导致最终可执行文件的尺寸较小。 尽管由于编译器的优化,您可能会期望内存布局或初始化方面的差异,这可能会导致所谓的“仅发行”错误,但发行版本的执行速度会更快。 运行构建配置 上面介绍的步骤足以在本机开发中设置新的构建配置。 要在构建配置打开方案中运行该应用并更改运行构建配置: React Native中的问题 请记住要检查您的TypeScript代码是否已编译(如果有)以及打包程序是否正在运行。 要使用指定的构建配置在React Native中启动iOS应用,您只需运行: react-native run-ios –configuration Stage 不幸的是,这对于任何基于发行版的配置都将失败,并显示一条错误消息,指出无法在AppDelegate中找到RCTBundleURLProvider : AppDelegate.m:2:9:找不到“ React / RCTBundleURLProvider.h”文件 我们需要在目标构建设置([TARGET]→构建设置)中为新的Release构建配置添加缺少的标题搜索路径和库搜索路径 。 为每个新的“发布”构建配置在“ 标题搜索路径”中添加一个条目: $(BUILD_DIR)/Release-$(PLATFORM_NAME)/include 为每个新的发布版本配置向库搜索路径添加一个条目: $(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME) 现在,您可以在指定的构建配置中启动该应用程序: react-native run-ios –configuration Stage 请记住对“测试目标”执行相同的操作,否则此命令将失败。 黑暗中总有一线光明 没有任何以前的经验,在React Native中定义不同于Debug和Release的iOS构建配置可能会令人沮丧。 但是,在一点指导下,这可能是一个快速而轻松的过程。 如果您对如何为每个构建配置设置不同的Google配置感兴趣,建议您阅读本教程。 尽管它是为本机开发而编写的,但是您可以在React Native中完全相同地设置运行脚本 。 最初发布于 brightinventions.pl 。 […]

ARKit 2简介—图像跟踪

上一个WWDC,iOS 12与ARKit 2一起发布。最初的ARKit于去年与iOS 11一起发布-它允许开发人员使用本机iOS框架将AR添加到其应用程序中,并使用户可以使用它。 借助ARKit 2,新的功能被添加到框架中,从而将体验带到了另一个层次。 诸如图像跟踪,世界地图,对象扫描, 视觉集成以及金属和反射表面之类的东西是其最新版本最令人期待的功能。 由于这只是第一部分,因此我将从图像跟踪开始,并随着我们的前进继续探讨其余所有主题。 这是集合的列表,随着我们的进行,它将更新: 影像追踪 世界地图 物体扫描 视觉整合(即将推出) 金属和反射性表面(即将推出) 就个人而言,图像跟踪是ARKit 2的最佳功能。 它允许开发人员将图像上传到他们的应用程序中,例如从相框中上传照片,然后可以在使用该应用程序时实时识别这些图片并在其上执行某些操作-例如在其顶部放置3D模型。 在WWDC的示例中,演示者使用了他的猫的相框。 他将图像作为ARReferenceImage上传到应用程序。 然后,您可以在应用程序中这样定义它: //定义一个变量来保存所有参考图像, 让 referenceImages = ARReferenceImage .referenceImages(inGroupNamed:“ AR Resources”,bundle:Bundle.main) 这将收集您放置在资产文件夹的AR资源文件夹中的所有参考图像。 接下来,我们必须配置我们的AR会话。 我们通过设置实例化ARImageTrackingConfiguration 。 除此之外,您还必须设置其trackingImages属性以及maximumNumberOfTrackedImages 属性。 第二个属性使应用程序知道该应用程序“允许”同时跟踪多少图像-通常取决于您打算对应用程序使用什么来决定。 这是一个例子: //创建会话配置 let配置= ARImageTrackingConfiguration () 配置 .trackingImages = referenceImages 配置 .maximumNumberOfTrackedImages = 1 //运行视图的会话 sceneView .session.run(configuration) 恭喜你! 您的应用程序现在将自动跟踪您告诉它的图像。 从那里开始,我们使用renderer( […]

3D Touch — Peak&Pop功能

在我以前的文章中,我写了关于在您的应用中采用UIApplicationShortcutItems的文章。 现在是时候实现Peak&Pop了-3d Touch提供的一项功能。 开始吧 首先,我们需要检查我们的设备是否支持强制触摸事件。 然后,如果我们的设备熟悉强制触摸,则可以轻松注册UIViewController的强制触摸事件。 看一下这个片段: 第二种方法负责一个称为Pop的事件。 当3d touch机制检测到您强烈按下从viewControllerForLocation方法返回的ViewController ,它将调用该UIViewController并将其作为viewControllerToCommit给第二个viewControllerToCommit previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController)函数。 重要的是,当 viewControllerForLocation 返回 nil , 将不会调用 第二个函数 viewControllerToCommit 。 在此方法中,我们可以显示viewControllerToCommit或执行其他操作,例如,为触摸的视图添加动画。 实作 假设您有UIViewController ,其中包含两个UIImageViews ,其中包含漂亮的苹果图像。 对于此控制器,我们要实现3d Touch Peak&Pop功能。 在viewDidLoad()函数中,为强制触摸事件注册我们的控制器。 很好,是吗? 结论 我不喜欢确定用户触摸哪个视图的方法。 检查一个点并为此计算位置并不是很好。 实现视图的3d触摸机制的另一种更好的方法可能是:通过某些属性(例如3dTouchGestureRecognizerDelegate扩展UIView类,然后在UIViewControllerPreviewingDelegate实现某些方法。 然后,我们不必检查视图是否被触摸,因为在委托方法上,触摸的视图可以作为方法参数传递。 gestureRecognizer熟悉的东西。 也许在将来的iOS更新中,API会更改吗? 综上所述, UIViewControllerPreviewing允许我们创建非常漂亮的功能,我强烈建议您使用它并改善您的应用程序! 您可以在我的GitHub存储库中找到示例应用程序的整个实现。 感谢您的阅读,很快再见! 关于我 我是波兰格但斯克的软件开发人员。 大多数情况下都使用iOS,但我对其他任何技术,框架和挑战都持开放态度。 如果您喜欢我的帖子,请随时在Twitter上关注我并阅读我的个人博客。

iOS 11应用开发:创建Spotify克隆免费Udemy课程。

音乐是所有应用商店中最大的应用类别之一。 他们有潜力获得可观的收入。 了解使用流行的编程语言Swift 2构建功能齐全的iOS音乐流应用程序所需的基本概念,工具和功能。还学习如何设置自己的服务器以及上传最终将要播放的音乐。 您将学到的东西 Xcode安装和设置 iOS上的基本流功能 如何设置服务器(免费或付费) 如何使用PHP在服务器上自动对音乐文件建立索引(无需PHP经验) 如何使iOS应用与服务器通信 如何添加锁屏控件 如何添加锁屏媒体信息 如何处理电话等音频中断 如何在iOS上创建表视图和自定义表视图单元 动态地向您的应用程序和远程数据库添加更多数据 在Facebook上分享歌曲信息 跟踪我们的远程数据库 触手可及的强大技能 通过学习创建iOS应用以及PHP和MYSQL后端,您将对潜在雇主产生难以置信的价值。 将这两种技能结合在一起是开发人员被雇用为初创公司的第一原因。 这些创业公司需要这些信息,并愿意为此付出代价! — — — — 奖金 — — — – 您不仅可以学习iOS应用中流音乐的来龙去脉,而且该课程还包括大量奖励。 我教您如何创建和设置执行以下操作的功能齐全的服务器: 自动扫描新上传的音乐并将其添加到MYSQL数据库(无需您输入任何内容) 生成允许您的应用访问后端的PHP文件 — — — — — — — — — — — — — — 内容和概述 本课程无需编程知识,但会有所帮助。 如果您是一个完整的初学者,请参加我的其他课程(适用于完全和完全初学者的iOS应用)。 您将被带往以下过程: 如何在免费或付费服务器之间进行选择 如何在iOS上编写简单的流功能 如何向您的应用程序添加高级音频功能 […]

如何开始学习iOS

2年前,我以iOS开发人员的身份开始了自己的旅程,最近我在思考它,我是如何开始的(我是一个自学成才的人),我所经历的挣扎和我决定写一篇关于它的文章,我使用了哪些资源以及更多。 在继续阅读资源列表之前,需要记住一些事情: 我更喜欢阅读复杂的范例,而不是看教程,因为我想在编写任何代码之前有自己的步调并很好地理解事情。 许多iOS开发人员不喜欢我的使用方式(“阅读”),而是喜欢看教程。 您将在下面看到的列表假设开发人员已经了解一些编程知识。 好吧,现在让我们深入研究有趣的东西: Swift的语法 在开始学习Xcode之前,我强烈建议您从Swift的语法开始。 您可以从多种资源中学习,但到目前为止,我发现的最好的东西是Apple在iBook商店中拥有的书“ The Swift Programming Language(Swift 3)”。 来自 www.raywenderlich.com 的iOS学徒系列 就像我说的,我更喜欢读书而不是看书。 因此,我买了这本书,并完成了每个应用程序/练习。 照着做。 动手 不要只是阅读或观看示例。 尝试1-2周以创建您的想法的MVP。 例如,如果您想创建一个待办事项列表。 去做吧。 您将学到很多有关表格视图,手势和姿势的新知识。 另外,作为第一个项目的待办事项清单也是IOS开发中有许多功能的一个很好的例子。 必需品 在学习iOS时,您可以做的另一件事是观看WWDC视频。 它们的介绍非常好,具有教程,您可以学到很多新东西。 例如,当我观看几个WWDC会话时,我对Auto Layout的理解更好。 其他有用的结论 从最近的两年快速学习和编码中,我了解到每个iOS开发人员都会以一种或另一种方式“面对” Objective-C,因此,我强烈建议先学习Objective-C,然后再学习Swift。 我做了相反的事情,这比我想的要困难得多。 在学习过程或“构建应用程序”过程中,您将面临很多问题。 要记住的是要有耐心,当您的代码有问题时,请不要犹豫寻求帮助或在堆栈溢出中提出问题。 iOS开发人员的Twitter社区也非常友好,他们可以为您提供很多帮助。 如果您在此问题上有任何问题,请联系我@AgisilaosTs。 最后的想法 我喜欢iOS开发。 了解每个人如何成为开发人员真是太好了。 。 在开始使用iOS之前,我有一点C ++经验。 上面的列表对我非常有用,我学到了,当然,我每天都在学习新事物。 我希望这也能为您服务。

响应本机Swift和Promises

快速参考指南 对于任何给定的React Native项目,我更喜欢在本机端使用Swift并在Javascript端使用promises。 这是如何实现这一目标的瘦身方法。 1.桥接头文件 您需要一个.h文件来将Objective-C库公开给您的Swift文件。 该文件称为“ ProjectName-Bridging-Header.h”,通常包含您要访问的几个react native库。 ProjectName-Bridging-Header.h 2. React Native Obj-C Swift 您将需要另一个文件(.m),以Objective-C的方式描述您的Swift类,以便React Native可以理解它。 此处编写的函数映射到您将在下一节中看到的Swift类公开的函数。 例如,我将使用为自闭症音乐项目应用程序编写的AudioManager类的一部分。 音频管理器 3.您的Swift班 ! 最后,我们开始编写一些Swift。 这就是AudioManager类的大部分逻辑所在。 AudioManager.swift 4.在Javascript中使用它 现在我们回到了Javascript(又名仙境😉)中,我们可以在通过本机网桥进行交谈时使用所有JS技巧,例如async和await。 AudioComponent.js 我希望您发现快速演练对您有所帮助,如果您有任何疑问或需要澄清,请询问! 另外,请务必检查“自闭症音乐计划”,这是一项为患有自闭症谱系障碍的儿童创作特别设计的音乐的合作项目。 谢谢! 米克斯罗维克

在视图坐标系之间转换框架

知道子视图的确切位置是一种可以在多种情况下派上用场的技术。 您可能想知道用户是否可以看到该视图,从视图的初始位置执行动画或将视图还原到其原始目的地。 有很多用例。 您可能还会想到更多。 但是,当您要执行此操作时,您不能仅仅依赖目标视图的框架,因为它只是其超级视图坐标系的一部分,这很快会引起问题,具体取决于您如何构成视图层次结构。 幸运的是, UIView和NSView都有一些方法可以为我们提供所需的结果。 如果您阅读我的上一篇有关框架如何在macOS上工作的文章,您可能还记得我们曾简要介绍过坐标系。 因此,让我们深入了解如何在不同的坐标系之间转换框架。 现在,我们已经设置了场景,让我们看一下整篇文章所涉及的方法, convert(CGRect,to:UIView?)方法。 如果我们检查从访问视图框架中获得的值。 它是视图坐标空间内的正确值,但是当尝试在扩展到视图坐标空间外部的上下文中组合这些类型的值时,这并不能使其普遍正确。 我们要实现的是知道视图在屏幕上的确切位置,而不是子视图内的位置。 因此,通过传递当前帧并将其指向所需的坐标空间,我们现在可以获得所需的测量值。 您可以切换到任何您喜欢的坐标系。 我选择了过去与我最相关的窗口。 在实现中执行此操作时,访问视图的窗口很简单。 所有UIView都有对其所属窗口的可选引用,如果该值为nil,则表示该视图尚未添加到窗口中。 附带说明,这只是冰山一角。 这些方法中有更多的是采用点而不是框架。 请查看UICoordinateSpace以获取更多信息。 https://developer.apple.com/documentation/uikit/uicoordinatespace 这些方法在UIWindow上也可用的原因是它继承自UIView ,后者又符合UICoordinateSpace 。 如您所见,这是直接但功能强大的,但是macOS呢? 让我们看一下带有一些macOS代码的另一个示例。 该技术本身以及转换时的结果保持不变。 这两个示例之间唯一明显的区别是,它使用NSView表示窗口。 原因是NSWindow不符合PlaygroundLiveViewable 。 即使这看起来很虚伪,但在思考如何解决特定情况时,该技术也具有巨大的价值。 我在优化滚动视图和集合视图的滚动性能时都使用了此方法,如果该视图在屏幕上不可见,则不执行布局操作。 我还使用了这些类型的值来定义核心动画的开始和结束位置。 我相信您可以提出更多方案,关键是要知道该技术可以扩展您的工具箱,并且您获得的工具箱越大,找到问题的最佳解决方案就越自然。 希望您觉得这有用,对我而言,这已经无数次挽救了生命。

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

第四周过去了,这是我本周所做的事情〜 我第一次自己解决了合并冲突和合并分支的问题,这真是令人兴奋! 我还了解了如何合并UIView,动态标签创建以及有关相互依赖的约束的更多信息。 整合UIViews 当构建一个包含多个UIView的复杂屏幕时,请考虑是否可以重用这些UIView中的任何一个,而不是创建两个具有几乎相同代码的独立UIView文件。 例如,“添加付款方式”和“添加促销代码”是ScrollView中ContentView内部的两个UIView。 它们最初几乎完全相同,但是在用户交互后会更改。 这两个UIView可以合并为一个可重用的UIView,而不是拥有两个UIView文件。 在ReusableView中,枚举用于控制两个视图中的差异标签/差异行为。 动态标签创建 我认为基于传入的数据动态创建的文本标签是有史以来最酷的事情! 这是从一个自定义UITableViewCell创建的UITableView中的两行。 成分选项标签是stackView中的标签。 请注意,第二行没有选择自定义成分选项,因此不会生成标签。 这些自定义成分标签是在更新单元格功能内部生成的。 约束条件 如果您的元素将始终在同一位置对齐,则最好将这些元素彼此约束而不是独立约束。 即:productLabel的顶部约束和priceLabel的顶部约束应等于quantityLabel的顶部约束。 这样,如果顶部约束需要稍微偏移一点,则只需要更改quantityLabel的顶部约束,因为另一个标签的约束已经依赖于该约束。 我在本周使用的一些超级有用的git命令: 1.恢复为先前提交 查看以前提交的哈希 git日志 获得正确的提交哈希后,您想还原为: git reset –hard hashOfCommitYouWantToRevertTo 2.合并分支 首先确保您在要合并INTO的分支上 git checkout branchYouWantToMergeInto 然后确保您在正确的分支上 git merge branchYouWantToMergeIn 这应导致: 3.合并冲突 合并冲突文件路径将在终端中显示 我喜欢使用Sublime修复pbx proj文件上的合并冲突 subl pathOfPbxProj 修复Sublime文本编辑器中的pbx proj冲突 退出Xcode 使用以下终端命令打开工作区: 打开* xcw * 修复工作区中的其他合并冲突 第四周就这样了! 😊

6本必读的书籍,可帮助您成为一名优秀的程序员和iOS应用程序…

6本必读的书籍,可帮助您迅速成为程序员和iOS应用程序开发人员。 “要成为一名优秀的程序员,需要做两件事。 一种是获得大量练习。 另一个是要接受真正的良好教育” 1. Apple的Swift编程语言(Swift 3版) Swift对新程序员很友好。这本书由apple.swift编写,是在C和Objective-C的基础上构建的,没有C兼容性的限制。这是swift学习编程的最佳资源。 2. raywenderlich.com教程团队的快速学徒 本书适用于想快速学习编程的初学者,也适合于对编程有一点了解的初学者。 也许您为网站或某种程序编写了一些JavaScript。 在编程过程中会遇到一些练习和挑战,并在测试过程中测试您的知识。 3. CodeWell Academy和RMZ Trig编写的《使用数据结构和算法版的Swift大师手册》 这是一个非常不错的初学者指南,可以使用数据结构和算法进行编码。 在本书中,您将学习如何以及在哪里,何时,为什么使用代码。 最重要的是,您将学习如何使用。 您将首先观察世界并定义代表事物(数据)或动作的代码。 您会发现更高级的概念。 4.用Swift 2进行面向对象的编程作者:Gaston C. Hillar。 面向对象编程(OOP)是现代软件开发所必需的.Swift是一种多范式编程语言,其最重要的范式之一是OOP。 这很有意义,因为面向对象的编程可以使您最大程度地重复使用代码并最小化维护成本。这本书包含了太多的抽象概念,这些概念要求真实的示例易于理解。 5. Neuburg,Matt撰写的《 Swift的iOS 9编程基础》。 这本书是iOS应用程序开发的初学者。在这本书中,您将了解Swift,Xcode和Cocoa框架的基础。 还有Swift语言基础知识,UIApplicationMain函数,笔尖加载机制,委派和通知的Cocoa模式以及保留周期。 6.通过Matt Neuburg对iOS 9进行编程 本书具有一些高级的功能强大的iOS 9编程。这本书描述了视图,视图控制器,iOS应用程序界面的基本单元,应用程序委托。调查了iOS提供的最重要的辅助框架。

最小化的Swift Docker映像

断断续续的一年多来,我一直在尝试获取一个小的Swift Docker映像。 我发现小图像是有好处的,特别是在可伸缩的微服务架构中,容器不断地移动到不同的机器上,并且需要占用很小的空间并快速启动。 目前,基本的swift:4映像为1.3GB! 这使得难以在图像周围移动(推动和拉动)以及协调众多容器。 最初,四处搜寻使我进入ibmcom/swift-ubuntu-runtime ,它仅包含必要的运行时依赖项。 这是一个很大的改进,基本大小为338MB,仍然很大,但比基本Swift映像小了近4倍。 实现小图像的一种范例是静态链接容器的主要二进制文件,并将其FROM scratch放入图像中。 这可以通过许多不同的编译器来实现。 不幸的是,Swift编译器在静态链接标准库和Foundation时存在一些问题。 但是,使用Docker的多阶段构建功能并从基础Swift映像复制必要的共享库将使您拥有比IBM Swift运行时映像小的映像。 我编写了一个shell脚本,该脚本使用二进制文件的名称以及可选的输出文件的名称,该脚本使用ldd确定二进制文件使用的共享库,并将它们压缩为gzip压缩的tar文件。 使用此脚本,我能够从基本的Swift映像开始,构建二进制文件,并将依赖项和二进制文件复制到busybox映像中。 我用这种范例构建了两个图像:一个简单的print(“Hello, world”)程序和一个Vapor“ Hello,world”网络应用程序。 print图像为102MB,而蒸气图像为113MB,大约是ibmcom/swift-ubuntu-runtime图像的ibmcom/swift-ubuntu-runtime ! 希望很快就能解决静态链接,并且图像可能会更小。 快乐的Swift-ing / Docker-ing!