如何像聊天应用程序一样预先添加ASCellNode

好吧,您知道这些著名的聊天应用程序。 微信和Kakao对话。 这些具有共同的特征。 这些预附加消息的内容偏移量接近于零 。 在此之前,我只是自定义了ASBatchFetching,使预附加的提取可以像基本的附加提取一样工作。 让contentSize:CGSize = scrollView.contentSize 让viewLength = bounds.size.height 让contentLength = contentSize.height //内容较少 如果contentLength <viewLength { 切换scrollDirection { case .down:返回.prepend case .up:返回.append 默认值:return .none} } 让triggerDistance = viewLength * LeadingScreens让剩下的Distance = contentLength — viewLength —偏移量 切换scrollDirection { case .down: 返回remainingDistance <= triggerDistance吗? .append:.none 大小写: 返回偏移量<triggerDistance吗? << — @HERE .prepend:.none 默认: 返回.none } […]

美术初录

Quizásya使用了escuchado los rumores或quizás苹果列表,Apple证明了Prisma esta haciendo olas en todos los medios。 在iOS上单独运行的应用程序(在Android上运行的Android应用程序)可以转换为单独的艺术照片。 香格里拉亲子杂志“ El Grito ”,爱德华·蒙克或“ La Ola ” Katsushika Hokusai的儿子。 准备好ya es es bastante adictivo的malgastar horas muertas en lapequeñaaplicación。 单独播放不方便的视频时,会按照1:1的分辨率和分辨率单独生成1080像素的图像。 我想在任何时候都不能错过任何一个版本的程序。 数码相片制作工具,数码胶片工具,照片制作和制作; 许可结果与原件相似。 Cuando已使用instala laaplicación,的照片在阿瓜印加达语中显示了usando Prima。 Esa marca de agua puede ser removida en los ajustes del programa。 Laaplicación,hasta ahora和es compatiamente GRATIS! 苹果计算机软件开发公司持续发展的过程。 Prisma de […]

如何将Appstore评论有机提升300%

每个应用程序开发人员都渴望获得应用程序商店用户的真实评论。 在商店中对该应用程序进行更多评论有很多好处。 这里有几个: 它可以帮助新用户决定是否下载该应用程序 它可以验证应用程序是否被用户使用和喜欢 在App Store中享有较​​好的声誉,并根据评论数在App Store搜索中享有优先权(并非在任何地方都专门提及,但很有意义) 它带来了更多的下载和更多的应用内购买(如果有) 您可以直接要求朋友和用户在应用程序商店中查看该应用程序,但由于它不是真实的,自然的评论,因此始终存在一定的局限性,并且可能不会得到该应用程序的真实用户的反馈。 苹果有一个简单的框架,可以直接在应用程序中要求用户进行审查,而无需进入AppStore。 这是获得用户评级和评论的最用户友好和完美的方法。 我已经在自己的应用中实现了此功能,并在几周内将评论数量提高了300%。 这是在代码中实现的方法。 导入StoreKit ………… ………… SKStoreReviewController.requestReview() ………… 根据Apple准则,用户在12个月内只能要求3次审阅提示,因此请谨慎询问用户,以便获得更好的反馈,而不会耗尽您的自然反馈回路。 有一些方法可以有效地实现它并控制您的反馈循环。 您需要决定如何和何时提示用户提供反馈。 总是最好在应用程序中的逻辑断点期间提示查看,并确保在应用程序中涉及更多移动时不要提示。 跟踪用户访问过的屏幕数量(您可能希望跟踪应用程序中的部分或全部屏幕),并且一旦用户访问了大量的屏幕,则提示进行评论。 以下是几种实现方法: 显示弹出窗口询问您是否喜欢该应用程序,如果用户说“是”,则显示评论提示,如果说“否”,则将用户导航到反馈屏幕。 这将给出4条或5条评论中的大部分,而1条和2条评论将被转换为反馈,以改善应用程序。 这种方法的问题是您要增加一个额外的步骤来获得更多评论。 而且它并不是完美的执行。 用户进入大量屏幕后,请显示查看提示。 这将是获得评论的最真实的方式,并且用户认为它是Apple内置的,不会被开发人员所扭曲。 最后一件事,不要忘记在应用商店上回复您的评论。 这是承认正面评价并回应负面评价的绝佳机会。 在您对评论做出回应后,很多负面评论会转换为正面评论。 请随时与我联系,以确保我确保在最近一次审核3个月后显示审核提示。

使用XCWaiter在Swift中进行异步iOS测试

苹果公司最近为开发人员发布了Swift 3.1开发快照和XCode 8.3。 XCTest框架中添加了几个方便的类,以为iOS和macOS应用程序启用异步测试。 在本文中,我们将看到如何使用XCWaiter执行异步测试。 Swift 3.1开发版 Xcode 8.3中提供了新添加的类,如果您具有Apple Developer Account,则当前可以下载该类。 您可以从开发者帐户的“下载”部分获得它。 Xcode 8.3需要macOS版本10.12及更高版本。 您可以下载大约4.​​52 GB的压缩XIP文件。 如果您已经具有以前版本的Xcode,请删除它或保留它,但是必须在Xcode DEVLOPER_DIR之间切换。 下载完成后,您可以解压缩文件以安装Xcode 8.3 beta,并等待Xcode和命令行工具的安装。 一旦使用所有命令行工具完全安装了Xcode 8.3,我们就可以将其拖到/ Applications路径中。 现在,我们必须通过运行以下命令来切换到新的Xcode版本 $ sudo xcode-select —切换/Applications/Xcode-beta.app/ 这将设置新的DEVELOPER_DIR,我们准备使用Xcode 8.3。 确保使用xcrun使用正确的工具链— find swift命令将显示您正在使用的当前工具链。 $ xcrun —快速查找 /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift 现在,请确保导出工具链并使用正确的Swift版本,此版本当前为Apple Swift版本3.1-dev。 您可以通过运行以下命令轻松地做到这一点。 $ export TOOLCHAINS = swift $ swift —版本 Apple Swift版本3.1-dev(LLVM 40fb70e1b6,Clang 658ce8b57d,Swift d6c7fe1067) 目标:x86_64-apple-macosx10.9 […]

在Mobile建立职业。 在Grace Hopper Conference 2016上建立联系

如今,移动开发在每家科技公司的产品策略中都变得轻而易举。 从约会到理财再到健身,一切都通过我们的移动设备完成。 事实上,最近的数据显示,尽管过去5年整体互联网使用量增长了75%,但移动使用量却增长了600%(Kleiner Perkins Caufield&Byers 2015年互联网趋势报告)。 对移动交互的所有这些强调对于希望在移动开发中发展事业的工程师来说是一件好事。 通过参加Grace Hopper Celebration 2016上的这些讲座和会议,紧跟这一发展趋势,并学习移动和可穿戴开发的最佳实践。并且,获得有关本年度移动社区聚会的一些内部信息: GHC16上的移动优先,可穿戴设备等 星期四 威胁建模“智能”手表-每个智能手表用户应了解的七件事,思科系统公司杰出工程师Michele Guel 大规模移动:构建持久架构面板,包括: Ayaka Nonaka,iOS工程师,工作流程 Kristina Thai,Intuit的iOS软件工程师 Facebook工程经理Jenny Yuen Facebook流动工程师Kasia Hayden 卢雯(Wendy Lu),Pinterest软件工程师 数字未来:消除物联网和可穿戴设备的炒作小组,其中包括: Siji Tom,高级工程师— Apple Watch,Apple 高通物联网智能城市副总裁Kiva Allgood Meta工业设计工程师Esther Lekeu 宝洁公司IoT美容主管Melissa Kreuzer 埃森哲高级研发总监Sunny Webb 安全日志不够用:事件日志记录着用户的隐私 Lyft安全与隐私技术项目经理Alisha Kloc (不是移动专用主题,而是移动工程师必须了解的重要主题。) GHC1 Paypal:可穿戴银行业务:当技术真正使生活更轻松时 ,Paypal的Carmen Ramirez FireEye员工研究科学家谢静(Jing Xie) 星期五 大家好! 建立您的第一个Apple Watch App研讨会,由以下人员领导: Patreon […]

Frida小工具补丁(异议)问题和解决方案的集合

在过去的几个月中,我使用Frida小工具修补程序做了很多iOS应用程序测试。 结果,我遇到了各种各样的问题,所以我记下了它们,并想在这里分享。 Objection是基于Frida脚本构建的移动应用程序渗透测试(iOS / Android)的运行时框架。 感官/异议 📱异议–运行时移动探索 github.com 另外,如果您是shell脚本的忠实拥护者,可以使用ipa-resign.sh 。 基本上,它执行相同的操作,即解压>将dylib修补为二进制>压缩>辞职> ggez。 #1 ios-deploy [28867:2152173] [!! 错误0xe8008015:找不到此可执行文件的有效配置文件。 AMDeviceSecureInstallApplication(0,设备,URL,选项,install_callback,0) 解: 通过使用XCode编译虚拟应用程序来重新生成配置文件(.mobileprovision)。 #2 ios-deploy [81588:2299477] [!! ]错误0xe80000c8:此应用程序不是为此设备构建的。 AMDeviceSecureInstallApplication(0,设备,URL,选项,install_callback,0) 解: $ vim有效负载/xxx.app/Info.plist //添加 242 UISupportedDevices 243 254 iPhone8,2 #您的iOS版本 //然后,重新打包 #3 错误:进程启动失败:安全性 (lldb) 解: 设置>常规>设备管理>信任开发人员应用程序配置文件 #4 ios-deploy [21336:960517] [!! 错误0xe8000067:内部API错误。 AMDeviceSecureInstallApplication(0,设备,URL,选项,install_callback,0) ios-deploy [22004:973130] [!! 错误0xe8008021:未知。 AMDeviceSecureInstallApplication(0,设备,URL,选项,install_callback,0) “应用程序安装失败” “达到免费开发配置文件的应用程序的最大数量。” […]

Manu Gos DubDub 2017

Anfang April trudelte nachsehnsüchtigemWarten ein请发送电子邮件至电子邮件:WWDC的票务! 第七届世界大战期间,苹果公司的环境和经营状况发生了变化。 Entwickler绝对是Jahr的Fixferktkt的拥护者,是Vorstellungen以及Infos的发布者Programmierplattform angeht。 Unden unserÖkosystemist von macOSüberiOS mit watchOS和tvOS in den letzten Jahrenkräftiggewachsen。 Dieses Jahr sollte es soweit sein,dass ich selbst dabei sein kann。 恩·特劳姆·瓦尔德·瓦尔(Ein Traum wird wahr),丹尼斯·莱兹滕(Jahre)战争,康菲伦茨(Konferenz)纠缠于科斯滕格吕登(Kostengründen)或韦根·佩奇(Tich bei der Ticketvergabevölligausser Reichweite)。 因此,Wurde direkt der Flug gebucht,mit zwei Kollegen von den Sixt Labs,Carmen und Werner,eine Unterkunft Organisiert und nunhießes nur […]

iOS教程— Kenalan Dengan ViewController dan View

Setelah lama vakum nulis,akhirnya ada kesempatan mood untuk nulis lagi,教程kali ini saya pengen membahas hasil belajar saya di iOS,ini masih sederhana banget tentang dasar ViewController pada iOS。 Jadi教程kali ini kita阿肯色膜sebuah aplikasi扬terdapat 2页,yaitu页pertama berisi Button unduk memanggil aksi ke页kedua。 Setelah ini saya jelaskan tentang kosep视图和ViewController。 ViewController dan View,它是如何工作的? Oke sebelum membuat项目,marisaya kenalkan和ViewController。 ViewController adalah fondasi utama […]

制作应用电影

我注意到,App Store现在允许您最多包含三个应用程序预览(视频)以及五个屏幕截图,因此我重新介绍了制作方法。 俗话说,iOS 11将具有设备上的屏幕录制,但是与此同时,您可以通过将设备插入Mac,启动Quicktime Player并从“文件”菜单中选择“创建电影录制”来创建设备的屏幕录制。 。 然后选择您的设备作为“录制”按钮旁边的视频和音频源,然后按该按钮开始/停止录制。 关闭窗口时,它会提示您保存录音。 iTunesConnect不会接受此.mov文件,因为它是60FPS,而且我曾经不得不在iMove中执行一系列步骤才能将其转换为30FPS,但是现在iMovie具有App Preview支持。 因此,启动iMovie,转到“文件”菜单以创建一个应用程序预览,然后将提示您导入.mov文件(或者您可以使用“文件”菜单中的“导入媒体”选项)。 我选择了剪辑的整个范围,并将其拖动到影片窗格中(都可以在“编辑”菜单中完成),然后在“文件”菜单中导出(共享)到预期的目标,即App Preview,它将是一个。您可以将mp4文件上传到iTunesConnect。 当然,您也可以将其上传到YouTube。

自定义UICollectionViewLayout自动布局和动态类型

Gousto的iOS团队对其所有UI使用自动布局,因此我们能够容纳可变内容,动态类型和不同大小级别的设备。 当我们想将食谱列表切换到中等规模的设备上的网格时,我们很难找到有关如何使用UICollectionView和用于UICollectionViewCells的XIB实现此目的的任何文档。 这篇博客文章讨论了我们遇到的问题以及如何使用自定义UICollectionViewLayout实现它。 为什么? 自从引入动态类型以来,我们认为支持它对我们的用户将是有益的(这意味着响应用户在其设备上设置的字体比例)。 当要求重新设计我们的主要配方列表以添加另一种具有不同高度的电池时,我们认为这是一个绝佳的机会,应该不会太痛苦。 苹果公司说“在开始构建自定义布局之前,请考虑这样做是否真的必要”,这也总是很棒。 在整个这篇文章中,我将展示一些代码,但是我还将附加一个演示项目,以便您可以看到它的工作! 固定约束 以前,我们的单元格都具有相同的高度,而我们的食谱标题标签都具有高度限制,且字体大小最小,因此字体大小会缩小以容纳文本,在极端情况下,标题会被截断。 我们要做的第一件事是删除所有不必要的约束并使所有变量可变。 我们拥有的单元格布局非常复杂,带有许多子视图(有时是不必要的),因此我们对此进行了整理,并尝试使其尽可能平坦,并针对不同的场景使用了不同的单元格。 介绍自定义布局 如果要创建自定义布局,则基本上必须自己做好所有事情,这可能就是Apple不真正推荐它的原因。 在布局中,有三种主要方法: func prepare() 最初,我认为该方法一开始只会被调用一次,但是它被频繁调用,因此,如果layoutAttributesForItems为空(这是我们用于单元的缓存),我们只想计算估计的单元大小。 第一次调用时,我们的缓存为空,因此我们创建了初始布局。 在initialLayout中,我们实际上将执行我们的像元大小估计。 首先确定我们需要多少列,因为根据窗口的宽度,我们有1、2或3。 上面的代码创建了两个数组,对于我们的X和Y单元格位置,我们仅用列数的位置(例如三列)来初始化y数组 yOffset = [0,0,0] 我们基于列再次完成xOffset数组,因此如果我们有一个1024像素宽度的设备和三列,我们将拥有 xOffset = [0,341,682,0,341,682,…],依此类推。 接下来,我们需要遍历每个单元并为每个单元创建布局属性,并将其存储在本地缓存中。 在创建框架的最后,我们需要添加下一个yPosition,以便该列下面的单元格知道它的开始位置。 我们还将为下一遍设置该列。 最后,我们需要用新的高度更新contentHeight属性。 contentHeight + = collectionView.contentInset.bottom var collectionViewContentSize:CGSize 这只是返回我们在prepare方法中刚刚计算出的collectionView内容区域的大小。 func preferredLayoutAttributesFitting(_ layoutAttributes:UICollectionViewLayoutAttributes)-> UICollectionViewLayoutAttributes 这可能是使布局正常工作的最困难的部分。 我们发现没有多少文档对我们有帮助,因此为此进行了大量的尝试和错误。 在准备好布局之后,我们像往常一样将一个单元出队,并会自动调用preferredLayoutAttributesFitting。 这是单元格有机会指示其首选属性(包括尺寸)的位置,我们使用自动布局来计算这些属性。 我们将垂直fittingSize设置为压缩,因为我们希望像元在满足其约束的情况下尽可能达到最小高度。 该方法的关键是systemLayoutSizeFitting…因为我们的collectionView垂直滚动,所以我们可以将水平优先级设置为.required-这意味着它只能与预先计算的宽度一样大。 垂直优先级设置为.defaultLow,因为我们需要单元能够增长。 最初,我们弄错了这一点,最终导致一些单元会增长到1000像素…… 现在,布局将调用invalidate,在其中我们检查自originalAttributes之后单元格的高度是否已更改。 如果没有的话,我们会忽略它,但是如果有…… func […]