Tag: ipad

Swift Playgrounds:最简单的方法

如果您曾经尝试过建造快速的游乐场,那么您会知道这项任务多么艰辛和令人讨厌。 您不知道出了什么问题,必须一直为您的ipad发送时间,或者等一千分钟直到icloud重新加载它。 如此艰难,以至于我和我的朋友们首先习惯于首先创建一个xcode项目并将所有内容放入其中。 所以,要感谢苹果的时间: 狗的日子结束了! 为什么? 看看:Swift Playgrounds作者 因此,如果您想快速使用这个出色的工具,只需保留此页面即可! 为什么? 作者模板的工作就像魔术一样:您可以构建,测试它,还可以使用运动场语言(实时视图等)调试运动场。 当它准备就绪时:它就可以建造了,您的游乐场将在iPad上完美完成,就像馅饼一样简单! 怎么样? 首先:在苹果网站上下载该项目:Swift Playgrounds Author Template 顺便说一句,我不是要教如何使用,而是要说我在使用时学到的技巧。 1)了解结构 它的结构看起来像xcode和游乐场书籍的结合。实际上就是这样! 老实说,我并没有仔细说出一切,但如果您想了解更多..可以免费在Google上搜索。 运行项目重要的是什么? a)清单-在清单中,您将在其中告知游乐场的基本信息,例如名称,页数等。 b)源代码-在源代码中,您将放置类,例如视图控制器,类…… c)私人资源-这里将包含支持文件,例如图像,情节提要,XIB,Sceneview,音频…… d)章节-如果您已经写了一本操场上的书,那么您会知道这里是文本,尽管该平台在很大程度上发挥了作用 e)章节-最后但仍然很重要的产品,您很快就会了解更多! 2)保重! 上面的图像是此运动场模型中的一个类。您一定不要忘记让重写或委托功能处于公共模式。 如果您这样做,那么构建器将抱怨并要求您将其更改为私有,但委托将无法工作。 另外,请注意,在开始时我添加了此objc行,以便让他们知道我的类在项目中的位置:另一个“您一定不能忘记”的地方! 3)在目标! 如果您从未与多个目标合作过,也许会有些困惑,但是喘口气,我知道您可以做到! 在这个项目中,您有三个不同的目标: a)游乐场书-这将是您工作的结果:游乐场书,但让我们将其保留下来以作为结局 b)书籍来源-顾名思义,这个目标是您的来源,有点令人困惑,但是当我们检查成员资格后,您会明白的 c)书本来源-有用的目标! 有了这个,我们就可以运行,调试并在游乐场中做我们想做的一切 现在您已经了解了每个项目的一点点,应该将正确的目标成员资格添加到项目的每个源中,如果您从未这样做过,那么只需选择存档并打开检查器即可: 那么每个归档文件属于哪个目标? a)来源->图书来源 b)私有资源:私有资源通常是视听内容,这意味着如果您希望将其保留在书中,然后选择PlaygroundBook成员资格,LiveView目标也会发生同样的情况,如果您不标记成员资格,则源不会可用..这就是为什么对我来说不合理的原因是不将所有内容都标记为成员身份,但这取决于您🤷‍♀️ (显然来源除外) 4)建筑和大决赛 现在,您编写了没有错误的代码,并且想要尝试看看行为是否正常。 测试就像在普通的xcode中一样:cmd + r 当然,您必须选择正确的目标:实时显示测试: 选择实时取景,然后等待其在iPad中运行! 大决赛 必须告诉真相:我写了这整件事,等待这一刻! 现在是时候让您的所有代码成为一本真正的游乐场书,并向您的小侄子展示您的惊人项目了。 但是,为什么要大结局呢? 因为它是如此简单,以至我以为是谎言。 […]

将macOS应用程序带到iOS

最近,我们将心爱的Mac应用程序Kaleidoscope移植到了iPad。 iOS 11的生产力功能(例如拖放和增强的多任务处理)使其自然适用于平板电脑。 鉴于尝试使用此类端口的任务,我们必须首先确定要使其平稳过渡所需考虑的最重要的事项。 当iPhone最初发布时,史蒂夫·乔布斯发布了运行OS X的令人振奋的消息。尽管iPhone和其他相关设备的操作系统名称和功能会随着时间的推移而变化,但它们具有共同的传统,可以降低从以下位置移植应用程序的复杂性: macOS到iOS。 尽管平台之间的UI范例有所不同,但绝大多数框架和工具都是相同的。 但是,有一些有关UI和共享代码的重要因素需要引起我们的注意。 全面改革UI设计 macOS和iOS应用之间的主要区别在于macOS将AppKit用于其UI框架,而iOS使用UIKit。 AppKit包含重叠窗口,菜单和鼠标指针等概念。 UIKit包括Multitouch和一个窗口,该窗口根据应用程序的状态和上下文而变化。 苹果选择为iOS创建一个新的UI框架,因为这两个平台之间存在主要的UI范式差异。 因此,在创建Mac应用的iOS版本时,UI的设计将需要进行大修。 您应该为您的应用创建一个新的UI设计,使其在iOS上感觉很原生,并使用其惯用法。 注意创建或使用现有跨平台UI框架的诱惑。 这不仅很难解决,而且将来的OS版本可能会破坏您的框架,这将需要不断的维护。 最后,尝试使您的UI跨平台,您将有可能通过更多的工作获得更差的结果。 苹果制作了两个单独的UI框架是有原因的。 创建共享代码框架 应用程序中将包含共享代码的部分是模型,该模型以独立于UI的方式描述了应用程序的数据和行为。 如果您不是以这种方式设计应用程序,那么您需要做一些工作。 即使您试图创建一个干净的模型,您也很可能会发现需要做些工作的地方。 共享代码的最佳方法是创建一个框架。 您将需要为共享框架的macOS和iOS版本创建单独的目标。 通常,针对您的框架目标的一个好的命名方案是MyAppCore-macOS和MyAppCore-iOS。 您还需要创建一个新的iOS应用程序目标。 您的两个应用程序目标都需要将相应的共享框架目标分配为目标依赖项,需要与之关联,并且需要包含在嵌入框架阶段。 识别共享框架的文件 接下来,您将开始艰苦的工作,以确定哪些源代码文件应成为框架目标的一部分。 两个框架目标都应包含相同的源代码文件列表,并且这些文件应从Mac应用程序目标中删除。 包含在您的共享框架中的主要候选对象是数据模型文件,例如核心数据类,网络客户端,实用程序类以及可以与UI分离并重复使用的应用程序的任何其他部分。 查找应用程序独立于UI的代码的一种方法就是简单地检查每个源代码文件的导入是否缺少UIKit。 单元测试以提高可靠性 如果在视图控制器中定义了很多行为,则需要将该行为重构为现有视图控制器使用的单独数据类型。 当您明确定义模型并将其与UI分离时,您的共享框架将是单元测试的理想之选。 您的模型是应用程序中最重要的部分,添加单元测试将确认其运行正常。 进行更改时,单元测试还有助于最大程度地减少错误。 几乎完美的契合 为macOS创建的应用程序似乎很适合iOS。 您的应用程序的许多逻辑和数据模型可以在平台之间共享。 但是请不要忽略这些重要的细节。 您面临的最大挑战是创建一个干净的体系结构,以将应用程序的模型与其UI分开。 在iOS的UIKit中重新考虑并重新实现应用程序的UI,您将顺利地从macOS过渡到iOS。 在App Store上下载适用于iPad的万花筒iPad,免费试用14天,然后让我们知道您的想法。

为iPad推出Photomyne。 因为越大(有时)越好

Photomyne很高兴地宣布iPad优化的体验,现已在App Store上进行了最新应用更新(2017年7月)。 这是我们从忠实的用户那里获得的最迫切的开发需求之一,因此我们决定提供这一功能。 那么,是什么使8.0版Photomyne最好的iPad更新呢? 一些注意事项:首先,该应用程序(免费和付费)现在都在横向模式下运行 。 这意味着整个Photomyne体验(从扫描到浏览,共享和保存)都旨在使用iPad的横向模式来增强视觉效果和方向。 其次,使用iPad的横向模式键盘可以更方便地添加照片标签(添加照片的故事,位置,名称和日期)。 此外,如果您有Photomyne帐户,并且在iPad上使用Photomyne应用程序,则欢迎登录photomyne.com并使用iPad的大屏幕浏览和保存在线照片。 因此,请继续在App Store上更新您的Photomyne应用。 还没有Photomyne吗? 在这里尝试免费的应用程序,看看使用iPad多么有趣和轻松。 有任何疑问吗? 我们都很高兴:support@photomyne.com或通过photomyne.com访问我们

有效的Xcode堆栈视图方法

1 。 使用情节提要,创建一个堆栈视图,如图(1)所示。 将路线设置为“填充”,将“分布”设置为“均等填充”。 另外,为子视图设置间距,该间距对于iPhone和iPad看起来都不错。 设置好所有按钮后,请稍后使用这些值。 2 。 如图所示放置堆栈视图(图2)。 堆栈视图不需要大小限制 。 注意堆栈视图的位置。 约束使用尾随空格设置水平位置,并使用顶部空格设置垂直位置。 子按钮视图确定堆栈视图的大小。 您可能会想要调整堆栈视图的大小,然后将按钮放在其中。 我建议不要这样做。 这是一罐蠕虫。 3 。 将按钮或其他对象拖到“堆栈视图”中(图3a)。 然后使第一个的等于主屏幕的宽度(图3b)。 接下来,将宽度编辑为主屏幕的百分比。 注意0.09乘数。 这样做将使“堆栈视图”中的所有子代的大小都根据屏幕大小进行调整。 4 。 向子级添加一个约束(图4)。 选择“宽高比”并将其设为1:1。 这样可以防止按钮歪斜。 将此约束添加到堆栈视图中的所有子级。 这是一个包装。 堆栈视图和自动布局的这种基本方法在大多数情况下都有效。 寻找即将发表的文章,以了解IBM Watson,Apple CoreML和Google Colab如何合作确定外星人。 可在此处获取更多屏幕截图: 影片| 不是地球 www.notfrom.earth

为iPad编写应用程序1

CrowdCam LLC技术总监Joakim Fernstad撰写 tl; dr完全可行,仍然! 在CrowdCam,我们喜欢向人们展示他们的照片,在夏天,我们认为为iPad创建新产品会很酷。 如果它也可以在iPad 1上运行,那将非常酷! 该产品称为SendFrame,它显示通过电子邮件发送到连接到iPad应用程序的SendFrame电子邮件地址的照片。 你可以在这里找到它。 从理论上讲,这一切都非常简单,而且iPad 1无法应付(实际上,正如它所显示的那样!)。 但是,iPad 1只能运行iOS 5,最新版本是iOS 5.1.1,这是4年的OS版本(更不用说设备本身是6.5年了!!),并且Apple已将iPad 1标记为旧设备,这意味着他们将不以任何方式,形状或形式支持它。 有几篇文章(例如this和this)可以帮助您确定如何为此旧OS版本开发应用程序,但它们并未提供完整的解决方案。 我发现它比他们描述的要容易,尽管您需要了解一些注意事项。 首先,这是我使用的工具: 运行El Capitan 10.11.6(15G31)的MacBook Pro iPad 1,iOS 5.1.1(9B206)带30针连接器 Xcode 7.3(7D175) Xcode 6.2(6C131e)<<魔术的一部分 所有开发人员都可以在Apples开发人员网站(2.5GB)上下载Xcode的早期版本,也可以在此处搜索“ Xcode 6.2”。 为什么我们需要Xcode 6.2? 因为它仍然支持调试iPad 1,所以您只需要跳过其中的一些步骤即可使其正常运行。 有关该应用的一些信息 正如我所说,我们的应用程序非常简单。 用户可以创建一个帐户,选择一个SendFrame电子邮件地址,然后查看传入的照片。 还有一些控件可以在幻灯片中来回移动,旋转照片和删除照片。 共有5个视图,它们使用常规的UINavigationController在它们之间进行导航。 这是情节提要的完美用例。 对于服务器请求,我使用由NSOperation控制的常规NSUrlConnection。 自iOS 4以来,此代码运行良好,没什么花哨的。 故事板 由于此版本可在旧版iOS版本上运行,因此我们不能使用闪亮的新故事板功能。 您可以将此故事板设置为与Xcode 6.2(“打开位置”)兼容,但该设置对我而言一直崩溃,因此我将其保留为Xcode7.x。 这使我们进入箍1: 使用Xcode 7.3在模拟器上进行代码,情节提要和调试。 使用Xcode […]

iPad开发人员开发P2P支付应用程序的精确技巧

对等支付P2P是一种在线技术,允许客户通过Internet或移动电话将资金从其银行帐户或信用卡转移到另一个人的帐户。 点对点服务使人们能够像发送文本一样容易地进行相互付款,其中用户将允许其对等点更轻松地访问其帐户,从而使付款和结算账单更加自然。 的 iPad开发公司有自己的做事方式,因为他们正在开发自己的点对点汇款服务,并可能在安全的Apple Pay框架下。 苹果, iPad开发 据说该公司正在开发自己的点对点汇款服务,可能在安全的Apple Pay伞下。 一旦iPad开发人员与支付行业一起构建了该应用程序,Apple P2P服务可能会在今年尽快启动。 苹果还宣布,它将允许iPad开发人员制作与iMessage集成的应用程序。 消费者越来越接受在线银行,移动银行和电子商务,这为更多使用点对点支付铺平了道路。 进一步阅读以了解iPad开发人员在开发P2P支付应用程序时需要考虑的事项。 iPad开发人员开发P2P支付应用程序的精确技巧 对等或P2P付款是当今付款平台的一项点播服务。 从Download.com的… www.business2community.com

在iOS应用中处理大文件

我们如何使Kaleidoscope for iPad尽可能灵敏。 近十年来,万花筒一直是一种流行的生产力工具,这有充分的理由:桌面应用程序具有无与伦比的性能,因此可以无缝地进行文件比较和合并。 当我们着手将万花筒带入iPad时,我们知道过渡将相对简单。 但是,由于预计通过平板电脑的基于触摸的UI可以快速轻松地进行交互,因此我们预计在开发过程中会遇到一些障碍。 最大的三个挑战是: 比较两个文本文件后,快速显示较大的文本差异。 快速响应由多任务处理(即,打开第二个应用程序)和设备旋转引起的UI大小更改。 确保在较大的文本差异中滚动是平滑且无死角的。 所有这些挑战都是相关的; 共同的主题是确保在处理大型文本差异时,该应用程序具有尽可能高的响应速度。 清除障碍 创建大型,复杂的文本比较既费时又会影响性能。 为了提高效率,我们确保仅在需要时才产生文本差异。 为了清除出现不必要的文本差异的实例,我在Xcode中创建了一个断点,该断点可以播放声音并在产生差异时继续执行。 如果我听说过应该不生成差异时遇到断点的情况,我将调查原因。 使用并发队列 在构建高响应性应用程序时,重要的是您必须并行执行尽可能多的工作。 由于文本差异涉及比较两个文本文件,因此在UI中布置差异的逻辑还涉及两次执行某些操作(每个文件一次)。 我们使用OperationQueue类的实例创建并发工作项队列,同时执行了这些“对”工作项。 例如,由于各种UI布局原因,必须计算文件中每行文本的渲染高度(可能是换行高度)。 这些行高测量可能需要一段时间才能完成,尤其是对于大型文本文件。 因此,我同时测量了每个文件作为单独的Operation对象的行高。 这两个操作被添加为使用它们收集的线高信息的操作的依赖项,因此,一旦该信息可用,将自动开始需要线高的工作。 缓存布局信息 如上所述,计算文本差异的布局可能很耗时。 信息一旦存在,就将其保存在内存中,并以文本差异UI的宽度为键。 缓存的信息有助于确保旋转设备或通过同时打开另一个应用程序来调整窗口大小,从而尽可能地做出响应。 如果用户碰巧调整iPad的系统范围的字体大小首选项“动态类型”,则清除缓存的布局信息,因为字体大小的更改要求重新计算所有布局信息。 优化性能 在Instruments中使用Time Profiler可以帮助确定性能瓶颈。 有时,在较小的文本差异上效果很好的数据结构或算法最终会成为较大数据集的严重性能问题。 仪器(特别是Time Profiler仪器)派上了用场,以查看我的哪些方法正在占用CPU。 一旦确定了问题区域,便可以设计出一种更有效的方法。 仪器的使用极大地帮助了这种“使之工作,然后根据需要进行优化”的方法。 使用阵列节省时间 避免执行许多Swift字符串连接,而是加入字符串数组。 使用+ =从很多片段中构建一个大字符串比将那些较小的字符串添加到数组然后调用join方法要慢得多。 对于大量文本,此优化将方法花费的时间从10秒减少到大约10毫秒。 新设备,不折不扣的性能 在iPad上,性能可以说比在台式机上更为重要,因为用户可以触摸UI并期望立即得到响应。 加上iPad具有比台式或笔记本电脑更低的马力这一事实,因此保持警惕以确保性能保持尽可能合理变得更加重要。 随着我们为iPad改进万花筒,我们将继续将性能和响应能力放在首位,并在此过程中与您分享我们的见解。 立即下载iPad版万花筒,免费试用14天。

Cinefex 151

Cinefex iPad应用程序现已提供Cinefex第151期! 我已经看了那些关于Rogue One和Westworld的文章,特别感兴趣。 好的,推销已经结束。 现在,针对该版本中我了解到的有关应用提交要求的部分。 发行说明中有一个线索: 由于最初要求在购买订阅(或更普遍地说是应用程序内购买)之前必须有指向服务条款和隐私政策的链接,因此该更新最初被Apple拒绝。 我花了一段时间才找到书面规则,因为它不在通用的应用程序提交指南中,而是在iTunesConnect中定期更新的开发人员合同之一中。 这就是为什么该应用程序的“帐户”屏幕中有两个新按钮的原因。 至于为适应新的或新强制的应用程序提交要求而进行的更新,还算不错。

在iPad上编码? 当然可以!

独立软件开发人员Anders Borum的客座博客帖子,对使用平板电脑和手机进行编程非常感兴趣。 自2014年以来,他一直在制作iOS的Git客户端Working Copy。 您要在iPad上编码吗? 想知道为什么iOS本身无法运行iOS应用程序的开发工具? 您在旅途中手指是否渴望进行编程? Anders Borum创建了 工作副本 来应对这些挑战。 我使用Bitrise的原因并不常见:持续集成的构建服务器的价值随团队规模的增加而增加,但我一个人工作,在本地运行测试对于我的小型设置非常有效。 但是,我将展示如何使用Bitrise也可以在iOS设备上进行iOS开发,这意味着您可以在iPad上开发应用程序。 我将通过您正在使用的应用程序指导您。 我正在开发一款小型游戏,训练在触摸屏键盘上打字,以期提高速度并降低错误率。 游戏还试图解决程序员之间长达十年的争论,而您必须站在一边: 制表符或空格 。 我们来看一下: 游戏尚未完成,还有很多事情需要解决:我想关注启动屏幕的底部。 另外,在等待用户在选项卡或空格键之间进行选择时也没有移动,我希望“星系间的安全性”动画到位,并且我想出一种老式效果。 我会继续努力。 🙂 该游戏是需要Xcode构建的本地iOS应用程序。 我大多数时候都带着iPad,但没有普通计算机,因此也没有Xcode。 我的iPad确实有Swift Playgrounds,这是一个编程环境,专注于在编写代码时立即显示结果。 我在Swift Playgrounds内部制作了打字动画的原型,并且生成的代码易于集成到Xcode项目中。 视频中显示的游乐场显示一个视图控制器,并制作了我的自定义作家效果标签的两个实例。 您可以看到如何在产生这些值的代码表达式的右侧显示数字,字符串和颜色。 这使Swift Playgrounds成为尝试新想法的非常不错的工具。 如果我要展示编写者效果的编程方式,那将是一段令人难以置信的视频,尤其是因为我多年没有使用CADisplayLink并不得不研究文档。 视频显示了我对标签的颜色进行了调整。 从Swift Playground到Xcode项目转移工作时,我只需要label类本身,这就是为什么您看到我复制一些文件的原因。 如果以后要继续在Swift Playgrounds中工作,我会将AnimatedLabel保留在其自己的文件中。 现在,我需要一台运行Xcode的计算机来构建应用程序。 幸运的是,Bitrise只需将其推送到Git遥控器即可提供此功能。 因此,我开始构建,几分钟后,Bitrise通过电子邮件发送了结果,称结果失败。 几分钟后,Bitrise通过电子邮件告知结果,结果表明构建失败。 😒 该电子邮件包含指向状态页面的链接,其中包括构建日志。 在Safari中打开它并调用共享表,我可以使用“ Open in Working Copy将日志发送回应用程序。 在工作副本中查看日志时,它需要与正确的存储库关联,并且日志中提到的任何文件名都将链接到源代码。 Bitrise日志中提到了文件名和行号以及错误,因此我可以直接进行修复。 推送提交以触发Bitrise上的新构建。 第二次是魅力,在成功构建之后,Bitrise向我发送了一个链接以安装新版本。 Bitrise向我发送了状态电子邮件,就像上次构建时所做的一样,但是由于一切正常,因此第二封电子邮件包含用于安装该应用程序的链接,该电子邮件更为相关。 […]

Opener 1.4的新增功能

iOS 11就在这里,伴随它,我们为Opener准备了一个不错的更新! Opener 1.4现已上市,这是新功能。 让我们先消除明显的障碍。 我不是设计师,多年来有些人抱怨Opener图标的设计。 这个版本为Opener的图标带来了崭新的外观,该图标由了解Photoshop的人制作。 在iOS 11上,Opener看起来也很棒,带有大标题和重新安装了应用程序安装按钮的外观,以匹配所有新的App Store。 iOS 11公告中最值得注意的功能之一是拖放功能。 我们很自豪地宣布Opener 1.4支持拖放功能,您可以从任何地方拾取链接或文本片段,并将其拖放到Opener应用程序中以查看打开选项。 您也可以将浏览器行从Opener拖放到其他应用程序中。 除了上面提到的以iPad为中心的增强功能之外,还有一些对大家有用的东西。 进行了一项改进,使许多类型的链接打开得更快,包括在Safari中打开。 Opener现在可以更好地检测网页文本块中的链接。 Opener现在可以更好地处理以前无法使用的一些常见的流行重定向域。 如果您启用了Opener的AMP查找设置,并尝试打开已经是AMP链接的链接,我们将在不执行其他查找的情况下正确检测到它。 Opener 1.4现在可用,我们希望您喜欢它! 与往常一样,如果您有任何反馈意见,请随时发推文或给我们发送电子邮件。