Tag: iOS 9

使用iOS ReplayKit屏幕记录您的应用程序以进行错误报告

继续探索一些不常见的iOS框架的尝试,我们将尝试研究一个有趣但不受欢迎的候选者ReplayKit 。 ReplayKit使应用程序开发人员可以在其应用程序中记录活动的视频。 您也可以使用麦克风捕捉声音。 此框架自iOS 9起可用。从iOS 10开始,此框架使您可以为视频添加面部时间记录(例如实时评论)。 您甚至可以现场直播该应用程序的屏幕录像。 在wwdc会议中,Apple主要强调使用ReplayKit从游戏内部录制/直播您的游戏。 在任何应用程序中使用ReplayKit的一种可能性是错误报告。 如果测试人员可以选择记录导致错误的流程以及对缺陷的解释,那么事情会变得很容易。 但是您将无法使用ReplayKit报告任何崩溃。 我们稍后再讨论。 让我们来看一个示例,展示如何在这种情况下使用ReplayKit 。 项目概况 我们的项目由一个视图控制器组成,该控制器在表格中显示书籍及其作者的列表。 由于没有可供浏览的详细信息屏幕,因此当您单击书本条目时,在表格视图单元格上显示选择内容毫无意义。 但是默认情况下,表格视图单元格是可选的。 这可能是我们试图报告的错误。 BookListVC :显示书籍和作者的列表。 我们完成的BookListVC看起来像这样。 设置屏幕录像机 要设置屏幕录像机,我们使用ReplayKit的RPScreenRecorder类。 var screenRecorder:RPScreenRecorder? RPPreviewViewControllerDelegate RPPreviewViewController的代表在被关闭时会收到通知。 从屏幕快照中可以看到,有两种方法可以关闭视图控制器,既可以将记录保存为照片,也可以选择不选择。 如果应通知您的视图控制器如何解雇预览视图控制器,则应使用以下委托方法。 func PreviewController(RPPreviewViewController,didFinishWithActivityTypes:Set ) 从活动类型中,您可以找出如何解雇控制器。 如果集合包含saveToCameraRoll,则记录已保存到相机胶卷中。 如果集合为空,则仅关闭预览视图控制器。 如果您不熟悉活动类型,请遍历UIActivityType并内置活动类型 。 如您所见,预览视图控制器已关闭。 当应用程序导航到预览视图控制器时,我们将隐藏包含记录指示的窗口。 一旦将其关闭,就必须显示它,因为它是主UI的一部分。 您可以在下面查看我们的应用程序的录像。 崩溃报告失败!!! 现在回到为什么无法使用ReplayKit记录崩溃的原因 。 如果应用程序崩溃,整个录制流程将中断,并且永远无法将录制内容保存到“照片”中。 同样,涉及到移至后台然后弹回应用程序中的错误也无法正确记录。 在应用程序进入后台之前和应用程序进入前台之前,您将获得记录,而不是在应用程序外部花费的时间。 如果需要更清晰的说明,则可以自由浏览源代码 。 参考文献 ReplayKit上线– WWDC 2016 […]

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提供的最重要的辅助框架。

Xcode 7中的堆叠vs多行标签

大家好 一年前,我在一些教程的帮助下开始了我的第一个Xcode项目。 最近,通过一些断断续续的编码,我开始使用约束和堆栈视图。 堆栈视图 Apple在WWDC 2015上介绍了堆栈视图。使用堆栈视图和约束,您几乎可以为所需的任何Apple iDevice设置自动布局。 它能做什么 堆叠视图可水平或垂直堆叠多个级别。 单独的堆栈视图不会有多大帮助,您仍然需要固定或对齐按钮,图像或标签。 在Xcode 7之前,界面构建器中唯一的约束选项是align和pin按钮。 借助堆栈视图,您可以设置复杂的多设备布局。 对于非开发人员来说(乍一看)可能会让人感到困惑,但是它实际上很酷。 示例:复古计算器应用 为了获得一个想法,这是我正在为devslopes(https://www.devslopes.com)在线课程开发的复古计算器的示例。 我要做的是:垂直堆叠行(例如7,8和9),然后水平堆叠所有行。 有一些后续工作需要对整个堆栈进行对齐,以使其在应用程序中居中。 但是您会看到它如何在每个界面上居中。 当然,我本可以修复iPad上丢失的空间,但是此示例只是为了说明我的观点。 不要堆叠多行标签 现在在上面的示例中,您看到一个只有1行的简单标签。 您可以轻松地将其堆叠,不会引起任何问题。 但是后来我在多行标签上进行堆栈视图练习,然后尝试将其水平堆叠到其他堆栈。 这是示例应用程序的屏幕,在堆叠之前有一些按钮和多行标签: 堆叠后是同一个屏幕: 您会看到我遇到的问题。 我很头疼,我尝试将行设置为0或更多行,尝试了对我来说有意义的每个值,但是这对堆栈视图没有帮助。 在其上放置堆栈视图后,宽度更改为1600以上,(至少对我而言)没有意义。 我正在检查stackoverflow以查看是否有任何开发人员遇到与我相同的问题,并找到了这个问题。 投票最多的解决方案是为堆栈视图设置固定宽度。 我一直在想这不是苹果想要的。 事实并非如此。 解 这很简单,我想它只是一个错误。 只需在标签中设置一个占位符单词即可 ( 您可以使用多个单词,但不要使用完整的句子,这样此时它最终会以多行标签出现 ) 堆叠标签 用您打算使用的多行文字交换单词 完成这些步骤后,我能够按照本教程的要求堆叠视图。 我还没有玩过Xcode 8 beta,而且我仍然不是100%确信这确实是Apple的错误或某种原因,但是至少我不再遇到这个问题,老实说,试图解决这个问题这个问题对我总体上了解堆栈视图和约束有很大帮助。 问候, 一月

ITMS-90682:如果该应用程序支持iOS 8或更早版本,则不能包含16位或P3资产

这边只有撷取部分的内容,要看全文请到下方的资料来源 解决的方法在这里讲了https://forums.developer.apple.com/thread/60919?start=0&tstart=0。简单说,Xcode认为你的图片资源中包含了16位或者P3的资源,所以打包的时候会进行相应的处理,但是,只有9.3或者更高版本才支持这样的资源,所以到了9.2就会崩溃。 此时,我想说说什么是P3资源。P3指的是DCI-P3或者说DCI / P3,一种数字电影投影所用的色域标准,它能比sRGB显示更多的颜色。苹果在推出5k显示屏的新iMac的时候(2015年10月),约会了DCI-P3,随后9.7英寸的iPad Pro(2016年3月推出,推出时iOS 9.3系统),iPhone 7(2016年9月推出,iOS 10系统)和2016的MacBook Pro都使用了DCI-P3色域。即苹果公司的iOS 9.3系统支持DCI-P3色域,而iPad Pro作为第一个支持DCI-P3的iPad,使用的是iOS 9.3 。这也就解释了为什么我们之前打包的IPA到了9.2的设备上就会不正常。 资料来源: 说说ITMS-90682:如果该应用程序支持iOS 8或更早版本,则不能包含16位或P3资产