Articles of ipad

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现在可用,我们希望您喜欢它! 与往常一样,如果您有任何反馈意见,请随时发推文或给我们发送电子邮件。

如何根据人机界面指南在iPad上删除确认

阅读iOS人机界面指南 ,似乎没有“正确”的方式让用户在删除之前进行确认。 在处理UIAlertView和UIActionSheet时,指南列出了3件事: 请勿使用警报视图来确认用户启动的操作。 不要在操作表(在iPad上)上包含“取消”按钮。 操作表必须至少有2个按钮。 所以…我需要让用户确认他们想删除一些东西。 呈现它们的唯一选择是实际删除事物,或什么都不做(取消)。 他们可以选择不做任何操作,只需点击操作表外部即可解散它。 但是这只留下了1个按钮用于操作表。 你打算怎么做删除确认? 在iPhone上,有动作表的模态/动画版本,可以很好地实现此目的。 但iPad完全改变了动作表的呈现方式。 文档说,你仍然可以通过动画呈现iPad上的动作表作为模态; 但我发现无论动画是YES还是NO,它的外观和行为都完全相同。

当iPad具有24小时格式时,NSDateFormatter会有不同的结果

我一直在思考为什么这种情况现在发生了一段时间,我一点也不清楚。 如果您运行以下代码: NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@”dd-MM-yyyy|HH:mm”]; NSDate *date = [formatter dateFromString:@”18-01-2011|06:00″]; NSDate *today = [[NSDate alloc] init]; NSLog(@”date is: %@, today is %@”, date, today); 如果用户配置了24小时制,则上述打印date is: 2011-01-18 11:00:00 +0000, today is 2011-01-19 00:56:56 +0000 。 但是,当用户选择12小时制时,上面的打印date is: (null), today is 2011-01-19 12:58:51 am +0000 。 我做错了什么? formatter是否被假定为独立于语言环境? 请帮忙!

“didChangeSection:”NSfetchedResultsController委托方法未被调用

我有一个标准的拆分视图控制器,具有详细视图和表视图。 按详细视图中的按钮可以使对象在表视图的排序中更改其位置。 只要生成的排序更改不会导致添加或删除节,这样就可以正常工作。 即一个对象可以改变它在一个部分中的排序或从一个部分切换到另一个部分。 这些订购更改可以正常工作 但是,如果对象试图移动到一个尚不存在的部分,或者是留下一个部分的最后一个对象(因此要求删除它的部分),则应用程序崩溃。 NSFetchedResultsControllerDelegate具有处理添加和删除的部分的方法,在这些情况下应该调用这些部分。 但是那些委托方法由于某种原因没有被调用。 有问题的代码是样板: – (void)controllerWillChangeContent:(NSFetchedResultsController *)controller { NSLog(@”willChangeContent”); [self.tableView beginUpdates]; } – (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id )sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type { NSLog(@”didChangeSection”); switch(type) { case NSFetchedResultsChangeInsert: [self.tableView insertSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationFade]; break; case NSFetchedResultsChangeDelete: [self.tableView deleteSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationFade]; break; } } – (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath { NSLog(@”didChangeObject”); […]

在iPad中显示带自定义框架的模态视图控制器

我想在iPad中显示一个带有自定义框架的模态UIViewController ,它位于其父视图控制器的顶部。 我尝试使用表单,但据我所知,帧和阴影效果无法更改。 vc.modalPresentationStyle = UIModalPresentationFormSheet; [self presentModalViewController:cv animated:YES]; 我也试过使用一个弹出框,但据我所知,要么我不能居中,要么我无法隐藏箭头。 还有另一种显示模态视图控制器的方法吗? 是否可以通过使用表单或弹出窗口解决此问题?

加载/卸载HTML5 时,iOS Safari内存泄漏

我开发了一个带有几个UIWebView的iPad应用程序,它采用以下HTML和JavaScript。 由于iPad一次只能播放一个video,因此在特定的网络视图聚焦之前,我不会加载video。 这是通过在UIWebView上调用stringByEvaluatingJavaScriptFromString方法,调用JS方法getFocus()来完成的 。 同样,当不再需要Web视图时,我调用lostFocus()来卸载video。 这使另一个UIWebView可以播放另一个video。 到现在为止还挺好。 一切都很完美。 除了一件事: 这会导致内存泄漏。 每当观看 我已经尝试重新加载UIWebView(而不是用JS卸载video),这不起作用。 我还尝试了大量不同的JavaScript变体,标签变体等等。 var movieDiv = document.getElementById(‘videoDiv’), movieHtml = ‘<video id="video" src="../Documents/” width=”768″ height=”911″>’; var gotFocus = function () { movieDiv.innerHTML = movieHtml; var movie = document.getElementById(‘video’); movie.play(); movie.addEventListener(‘pause’, function () { movie.currentTime = 0; movie.play(); }, false); }; var lostFocus = function () { […]