Tag: iOS应用程序开发

2018年:斯德哥尔摩顶级iOS应用程序开发人员

技术日新月异,在电子商务,旅游,酒店等各个领域都展现出巨大的潜力。 iOS世界中的这些技术进步为我们提供了一种有效的共享方式,以及通过虚拟空间中的用户网络存储数据的方式。 ChromeInfotech理解了多个OS零碎带来的iOS开发挑战,以及iOS的硬件和软件如此多样化的事实并没有使开发与它们完美匹配的应用变得更加容易。 但是现在,iOS App开发技术已成为其他领域的重要组成部分,例如:提高数据分析的透明度,在线和离线营销模式的进步,减少网络安全风险以及将与有价值数据损坏相关的威胁最小化。 ChromeInfotech-2018年斯德哥尔摩最佳iOS应用开发人员 我们在ChromeInfotech拥有超过十年的信息技术和服务领域的丰富经验,并跻身于顶级移动应用程序开发公司之列。 ChromeInfotech团队在iOS应用程序开发方面所做的出色工作已使我们成为斯德哥尔摩及世界其他地区的顶级iOS应用程序开发公司。 我们与一支由高技能的iOS应用程序开发人员,测试人员和iOS应用程序设计人员组成的团队,他们随时准备应对任何挑战。 从项目开始以来,我们就遵循以客户为中心的方法,以更好地了解客户对项目的要求。 为什么选择ChromeInfotech ChromeInfotech成立于2010年,已跻身美国乃至全球最可靠,最著名的移动应用程序开发商之列。 该公司开发了一系列应用程序,从娱乐,点播到医疗保健和教育,一应俱全。 早于时间就开发和发布了500多个应用程序; ChromeInfotech通过将每个应用程序创意转换为特色应用程序,不断超越行业标准。 有一个应用创意,请立即联系我们! 想要与一家值得信赖且经过认证的移动应用开发公司合作,可以通过sales@chromeinfotech.com与ChromeInfotech取得联系或获得免费报价。 ChromeInfotech是最好的移动应用开发公司,以合理的价格提供创新的IT解决方案。

使用Xcode Instruments诊断和解决性能问题

我们将创建一个简单的iOS应用程序,该应用程序在表视图中使用名称和头像来显示模拟动物列表。 阿凡达图片存储在我们的应用程序捆绑包中。 为了使应用程序表现得更真实,我们将实时分别加载化身图像,而不是使用imageNamed:方法预加载化身图像。 我们可以假设瓶颈是图像加载。 我们正在从闪存驱动器中实时加载图像,而不是对其进行缓存。 所以这可能就是为什么它很慢吧? 可以使用一些很棒的代码来修复该问题,这些代码将使用GCD异步地推测性加载我们的图像,然后对其进行缓存。 在开始编写代码之前,让我们测试一下我们的假设。 让我们使用仪器工具来分析应用,以识别问题。 首先,我们对工具感兴趣,例如: Time Profiler:用于测量CPU使用率,按方法/功能细分。 核心动画:用于调试各种核心动画性能问题。 时间分析器 Time Profiler是用于监视CPU使用率的工具。 它使我们可以了解应用程序中哪些方法消耗最多的CPU时间。 高CPU使用率并不总是您应该意识到的-您最可能希望动画例程非常占用CPU,因为动画往往是iOS设备上最苛刻的任务之一。 如果您遇到性能问题,那么查看CPU时间是确定性能是否受CPU限制以及哪些方法需要优化的好方法。 核心动画 核心动画工具用于监视核心动画性能。 它给出了定期采样的FPS的细分,并考虑了发生在我们应用程序之外的部分动画。 核心动画工具还提供了许多调试选项,以帮助调试渲染瓶颈。 我们对选项感兴趣,例如: 颜色混合层:此选项突出显示正在发生混合的屏幕的任何区域,根据严重程度从绿色变为红色。 混合不利于GPU性能。 它会导致透支,并且是滚动或动画帧速不佳的常见原因。 颜色 shouldRasterize 绿色, shouldRasterize 红色:使用shouldRasterize属性时,将缓存昂贵的图层图形并将其渲染为单个展平的图像。 当必须重新生成缓存时,此选项以红色突出显示栅格化的图层。 如果频繁重新生成缓存,则表明光栅化可能会对性能产生负面影响。 屏幕外渲染的颜色为黄色:以黄色突出显示需要屏幕外渲染的任何层。 这些层可能是使用诸如shadowPath或shouldRasterize优化的候选shouldRasterize 。 我们的考虑可以归结为这种问题可能与图像加载有关的想法,所以让我们从Time Profiler工具开始。 在tableView: cellForRowAtIndexPath:方法(这是我们加载图像)中花费的CPU时间的总百分比仅为6%。 那真的不是那么高。 这可能是一个建议,说明CPU / IO不是此处的限制因素。 让我们看看这是否是GPU问题。 我们将检查GPU利用率。 GPU的平均硬件利用率约为72%。 看起来GPU不得不非常努力地渲染动物列表。 为什么GPU使用率如此之高? 让我们使用“核心动画”工具的调试选项检查屏幕。 首先,启用“ 颜色混合图层”选项。 屏幕上所有的红色表示文本标签上的混合水平很高,这并不奇怪,因为我们必须使背景透明才能应用阴影效果。 这就解释了为什么渲染器利用率如此之高。 […]

如何使用Fastlane徽章插件改善您的Beta部署流程

我们本教程的目标是在应用程序图标上覆盖应用程序版本号,内部版本号和发行类型。 希望这将使您的项目经理和测试人员更容易轻松地识别应用程序版本,而无需转到应用程序设置(或放置在任何位置)。 如果这是您第一次听说Fastlane,那么它基本上是一种工具,可让您自动执行iOS和Android应用程序的Beta部署和发布。 有多种安装Fastlane的方法。 您可以使用Homebrew,Rubygems或安装程序脚本进行安装。 任一种都可以。 $〜宝石安装快车道 如果您已经熟悉创建自己的方案和配置,请跳至下一部分 。 安装Fastlane之后,我们将根据上表为构建环境创建新的方案和配置。 要为登台构建创建新的配置,只需复制Debug配置并将其重命名为Debug Staging 。 然后复制Release配置并将其重命名为Release Staging 。 对于应用商店配置,您只需复制Release配置并将其重命名为App Store 。 而已。 然后,编辑方案以使用新创建的配置。 暂存方案将使用“ Debug Staging和Release Staging配置,而App Store方案将使用App Store配置。 对您指定的每个方案重复上述步骤。 请记住,通过选中共享复选框将方案设置为共享方案。 否则,您的方案不能在Xcode之外使用,也不能在git中跟踪。 如果您已经熟悉Fastlane,请跳到下一部分 。 要在项目上初始化Fastlane,请在终端中运行以下命令。 $〜cd / your-project#确保您在项目根目录中 $〜fastlane初始化 Fastlane然后将提示您几个问题,以帮助您快速设置项目Fastfile和Appfile 。 如果您搞砸了,请不要担心,因为稍后可能会对其进行更改。 创建快速通道 Fastlane使用通道定义部署工作流程。 在本教程中,我们将创建三个不同的通道。 用于开发构建的alpha通道,用于暂存构建的beta通道以及用于生产(应用商店)构建的store通道。 通过此设置,您只需运行以下命令即可使用Fastlane。 $〜fastlane alpha#运行Alpha通道 $〜fastlane beta#运行beta通道 $〜fastlane store#运行商店通道 要自动增加内部版本号和版本号,我们必须确保您的项目正在使用Apple Generic版本控制系统。 您可以阅读Apple的官方文档以了解更多详细信息。 我们的计划是根据git […]

立即开始使用Helper类! – 第2部分

。 。 专业人士提示: 对于iOS中的状态标语,有一些相当不错的第三方解决方案。 如果您使用cocoapods,则可以为此使用多个吊舱。 如果您不熟悉在iOS中使用cocoapods,请参阅此内容。 。 。 我个人使用NotificationBannerSwift。 我们可以利用此程序包的功能以及我们的Helper类,以一种巧妙的方式来显示具有警报样式的通知/状态横幅消息。 首先,我们需要按照自述文件中的说明安装NotificationBannerSwift。 然后,我们需要将其导入到Helper类上方的Helper.swift文件中。 导入NotificationBannerSwift。 .class Helper {静态var应用程序:Helper = {返回Helper()}()。 。 。} 现在,只需在我们之前在Helper类中编写的警报函数之后添加函数showStatus() 。 在执行网络详尽的任务之前,我怎么知道是否有互联网? 如果您在构建iOS应用时曾经问过自己这个问题,那么这是给您的。 苹果有一个方便的SystemConfiguration 该类可以检查网络可达性,更人性化,它可以为您检查是否有互联网,以便您可以检查连接以及在联机时发出请求和进行网络呼叫。 首先,在我们的帮助文件中导入SystemConfiguration类。 导入SystemConfiguration 在到目前为止在Helper类中声明的函数之后,添加以下isInternetAvailable()函数。 就是今天的人们! 在这里查看我的其他文章。

使用自动布局和自动尺寸为UITableViewCell动画大小和文本更改

在我最近的iOS项目中,我有一个视图,其中内容显示为垂直可滚动的卡,并且每个卡都可以扩展以显示更多详细信息。 我已经将整个解决方案建模为UITableView ,其中每个单元格包含垂直堆叠的子视图(由于iOS 8的支持,我无法使用UIStackView ),并且每个子视图都使用其自己的视图模型进行了初始化(但这只是实现细节)。 在最终视图中,层次结构看起来类似于下图。 通过单击“ 更多和更少”按钮,“ 描述”字段在短文本和长文本之间切换。 从iOS 8开始,UITableView提供了一种自动管理UITableViewCell高度的简便方法,而无需手动计算并为每个单元格提供高度。 通过将行高设置为自动并提供估计的行高来完成 tableView.rowHeight = UITableViewAutomaticDimension tableView.estimatedRowHeight = 124 您只需要确保设置正确的约束即可,这意味着,例如,如果UILabel正确计算了其大小,便可以将其超级视图推到所需的大小。 这意味着您不能例如设置高度限制,最终应该从上到下固定标签。 我的情况非常简单,我只是将UILabel固定在每一侧。 当涉及到动画时,无需考虑高度就非常简单。 您只需更新文本并设置动画大小即可。 因此,代码如下所示: //细胞 @IBAction功能按钮MoreTouched(_发送方:UIButton){ labelDescription.text = longText 委托?.contentDidChange(cell:self) } //代表 扩展TableViewController:CellDelegate { func contentDidChange(cell:Cell){ UIView.animate(withDuration:1){ self.tableView.beginUpdates() self.tableView.endUpdates() } } } 结果是有效的,但存在一些缺陷。 文本立即更改,整个表格都具有动画效果。 但是,文本在垂直方向居中,在我看来,这不是故意的。 我想实现“更多显示”行为。

由教程更新的非官方watchOS

raywenderlich.com在2018年8月20日报道说,他们的watchOS by Tutorials和tvOS Apprentice书籍将不会更新,因为“我们的客户需求不足,无法保证对这些书籍进行进一步的投资。” Tutorials的2D Apple Games和Tutorials的3D Apple Games也不会更新,“因为如今大多数游戏开发人员都喜欢使用Unity或Unreal Engine等现代游戏引擎。”但是SpriteKit和SceneKit是唯一可用于watchOS… 虽然我可以理解这个商业决策,但watchOS by Tutorials是我最喜欢的资源,用于学习如何制作watchOS应用。 而且Apple Watch不会随处可见。 Series 4 Watch和watchOS 5包含激动人心的新功能,并且Series 3已经是我所依赖的成熟产品,因此我相信这个社区只会不断增长。 我倾向于同意Business Insider的文章。很明显,苹果的未来就是Apple Watch。 关键报价: 就苹果公司的技术野心而言,很明显,Apple Watch就是它的发源地。 苹果公司在微型化,材料,新型传感器,新型体验和新型客户方面取得了最大的进步。 有什么用? 它不仅是出色的健身追踪器。 这是我手机的远程控制和通知中心,因此只需轻轻一按,我就能做很多事情,而不必从口袋里掏出iPhone了。 raywenderlich.com发行的Tutorials的watchOS的最新版本为watchOS 4,Swift 4和Xcode 9的v3.01。我逐章发布了watchOS 5,Swift 4.2和Xcode 10的更新指南。以及包含所有项目的开始和结束版本的代码存储库。 我还将写教程来介绍新的watchOS 5功能。 我也已经开始通过教程更新页面进行非官方2D苹果游戏和通过教程更新页面进行非官方3D苹果游戏。 我已经获得Ray的许可。 代码存储库为:https://github.com/christophomos/watchOS_by_Tutorials_update 目录 介绍 您好,Apple Watch! 设计出色的手表应用 建筑 UI控件 选择器 布局 桌子 导航 数字王冠与手势 快照API […]

用Swift编写Dijkstra算法的正确方法

剧透警报:您根本不写! ⭐️⭐️⭐️️⭐️⭐ 嗨! 此帖已移至新博客! 来到Fivestars.blog以获得最新文章! ⭐️⭐️⭐️️⭐️⭐ 上周,我写了关于如何在Swift中编写著名的Dijkstra算法的代码:本文是其后续内容。 我的原因 我没有写上一篇文章,而是花时间做文章研究:我所有的Metro Metro应用程序都实现了类似的算法。 在本文中,我将向您展示为什么您不需要利用我的相同方法,即利用Apple提供的工具并以更少的努力获得相同的结果 (同时获得其他好处)。 介绍GameplayKit 在Apple的数十种框架中,有GameplayKit:无论您的应用程序是否为游戏,该框架始终可供您使用。 但是什么是GameplayKit? 我很高兴你问! 我将让Apple的GameplayKit指南为您解答: GameplayKit是用于在iOS,OS X和tvOS中构建游戏的基础工具和技术的集合。 构建,发展和维护复杂的游戏需要精心计划的设计-GameplayKit提供了一些架构工具,可帮助您以最小的努力设计模块化,可扩展的游戏架构。 哇,这个框架听起来很多东西! GameplayKit核心 让我们使用分而治之范例更好地理解此GameplayKit,以下是其主要核心(摘自Apple的GameplayKit指南): 随机化 。 使用标准算法的这些强大,灵活的实现方式作为多种游戏机制的构建块。 实体和组件 。 通过在此架构上构建,设计更多可重用的游戏代码。 状态机 。 使用此体系结构可以解开游戏设计中的复杂程序代码。 Minmax策略家 。 为基于回合的游戏和AI玩家对象创建模型,并使用该模型计划最佳移动。 寻路 。 用图形描述游戏世界,允许GameplayKit规划游戏角色遵循的最佳路线。 代理人,目标和行为 。 使用此模拟可以使游戏角色根据高级目标移动自己并对周围环境做出反应。 规则系统 。 将游戏设计与可执行代码分开以加快游戏开发周期,或实施模糊逻辑推理以向游戏中添加逼真的行为。 等等…又是什么第五点? 5.寻路 。 将[…]世界描述为图表 ,[…] 规划最佳路线 […] 这听起来很像我们正在尝试做的事情! 让我们深入研究。 GameplayKit 寻路 […]

印度十大iOS应用开发公司

在当今的移动驱动世界中,企业家面临的最令人困惑的问题之一是,应从成千上万个应用程序开发公司中选择哪家公司来进行iOS应用程序项目? 如今,许多公司都夸耀其熟练和经验丰富的iOS应用程序开发人员,因此,在选择一个应用程序时要格外小心,以免将您的应用程序创意误入歧途。 如果选择错误的iOS应用开发合作伙伴,则可能会损失大量金钱和精力。 因此,在这里,我们列出了总部位于印度的十大iOS应用开发公司 。 我们之所以选择了印度的公司,是因为印度作为全球IT解决方案提供商的枢纽而赢得了声誉。 除了成本效益和及时的项目交付,如果您在美国或欧洲有业务,印度的IT公司还为您提供时区优势。 该列表并没有穷尽,您将发现它对于将来的iOS应用程序项目非常有用。 让我们从一流的iOS应用开发公司开始: 1. 解决方案分析师 Solution Analysts成立于2011年,是印度发生率最高的城市之一,在提供端到端IT解决方案的同时,保持高质量并符合行业标准已实现了许多里程碑。 除了iOS应用开发之外,开发量身定制的Web解决方案,企业移动解决方案,电子商务和IoT解决方案是该公司的强项。 公司拥有一支由100多名专业人员组成的强大劳动力,他们精通使用先进的工具来满足全球客户的各种业务需求。 该公司在总部和位于美国的办事处运营。 自成立以来,Solution Analysts在处理iOS应用程序开发领域的技术进步方面显示出透明的方法和专业知识。该公司的核心重点是面向全球企业的移动应用程序开发和IoT软件开发。 2. TechAhead 该公司于2009年在印度的NCR地区成立。 该公司拥有150多名专业人员,他们在为Android和iOS平台开发移动解决方案和量身定制的移动应用程序方面拥有丰富的经验。 TechAhead在企业移动性和移动应用程序开发领域提供简单可用的功能性解决方案。 该公司拥有丰富的UID(用户界面设计)和后端架构应用开发人员。 该公司在为全球客户提供高质量服务方面处于领先地位。 3. Konstant信息解决方案 Konstant Infosolutions总部位于印度北部各州之一的首都,主要专注于移动应用程序开发和Web开发。 该公司成立于2003年,提供定制的移动应用程序和Web解决方案。 该公司还提供可穿戴设备,物联网,电子商务和云技术领域的高质量解决方案。 该公司还提供适合客户预算和其他要求的不同合作伙伴关系模型。 该公司拥有经验丰富的专业团队。 4. 融合技术 Consagous Technologies于2008年成立于印度中部最大的城市之一,提供定制的Android和iOS移动解决方案。 该公司还提供托管和应用营销服务。 它的核心重点是Android和iOS移动解决方案。 Consagous Technologies还提供PHP,ASP.NET,Symphony和其他技术的Web应用程序和Web开发服务。 该公司拥有资深的技术资深人士,可提供企业级移动应用程序,网站开发和软件开发服务。 5. Sphinx解决方案 Sphinx Solutions成立于印度西部最大的城市之一,提供移动应用程序开发和定制软件开发服务。 该公司成立于2010年,至今仍是领先的应用程序开发公司。 该公司还提供区块链开发。 为公司客户提供ICO开发和Web设计服务。 此外,Sphinx Solutions还通过公司的80多个内部资源提供Chatbot开发,大数据和数字营销服务。 6. Simpalm Simpalm位于印度中部城市之一,是领先的移动应用程序和网络开发服务提供商。 在移动应用程序开发中,该公司为Android,iOS和Windows平台提供量身定制的应用程序。 […]

快速发展的伦敦科技初创企业正在寻求现代iOS向导!

嗨,向导。 首先,让我们自我介绍。 我们是Pinga(www.pinga.co.uk),我们让人们轻按一下按钮,然后在15分钟之内将任何东西运送到他们家。 我们还帮助人们赚钱,在社区中随时随地为人们完成小任务。 通过将这两个群体联系起来,我们希望改变社会,使其更正常地为您周围的人提供帮助。 酷吧? 我们处于740亿英镑产业的中心,这个产业正以惊人的速度增长。 我们完全有能力通过取消传统的交易快递公司,而由恰好在正确的时间放置在正确的地方的本地人员来代替按需交付。 这对消费者也很重要,因为他们可以更便宜,更快捷地交货! 那么我们在做什么呢? 我们已经18个月大了,刚刚结束了我们在诺丁汉的成功启动活动之后的第二次募集资金,该活动在短短几个月内下载了3,000个用户。 我们热爱我们的工作,因为我们每天都处于“现状”,并使共享经济发挥到最大。 现在是关键时刻。 Pinga在伦敦启动,以证明这种改变世界的概念可以使其成为世界上最好的城市。 这意味着要加快产品开发的步伐,我们确实有很多工作要做。 我们收到了很多用户反馈,我们的产品路线图涵盖了整个办公楼层。 管理此产品开发是向导iOS开发人员的工作。 有人会将此职位称为iOS首席开发人员,但这与您实际要做的工作并不相近。 根据您过去的工作,我们会预算合理的薪水,并提供大量的认股权。 那么角色实际上是什么样的? 从根本上讲,您需要喜欢编码。 最初,我们希望您以已经拥有的Swift代码为基础,但我们完全可以稍后再进行架构设计-开始扩展时需要在Android上使用,因此我们希望您拥有当需要这样做的时候,对学习新语言(例如React Native)的热情。 但是,您将不仅会做到这一点,而且会生活并拥有问题,并提出解决这些问题的好主意。您将在现场进行思考,改进主意并看到潜在的陷阱。 那你呢 好吧,我们并不是规则的坚持者,但是我们希望您已经编码了至少两年了。 现在我们不在乎是在您的卧室,当地酒吧还是在埃菲尔铁塔上。 我们还需要您说双语(在代码中是)。 最后,请告诉我您已经将应用程序从概念移植到App Store? 现在,必须要做的事情……您必须乐于在我们拥有的基础上继续工作-不用担心这是很棒的代码。 您必须加入我们的愿景,并且您必须像我们一样。 否则,它的效果确实不好。 现在,这里的必备品真是太好了。 一些后端经验会很棒,特别是PHP。 另外,如果您对区块链的事情一无所知,我们会不断听到这是另一个好处。 对,那么我们需要您做什么? ●通过电子邮件将指向您的LinkedIn个人资料的链接发送给我们(现代的iOS向导不需要简历) ●在该电子邮件中,您还可以回答以下问题吗? 现在,如果您完成所有这些操作(很抱歉,很多操作),那么我们保证我们的CEO将在24小时内回复您并提供有关您的应用程序的反馈。 保证。 我们的iOS向导问题(请简短易懂!) 您显然已经从App Store下载了Pinga,那么您对此有何看法? 你会改变什么? 您将如何改善? 你最喜欢什么书? 命名您认为以最佳方式实现了产品市场适应的产品,为什么? 请通过主题行“我是iOS向导”通过电子邮件将您的LinkedIn个人资料和答案发送至jack@pinga.co.uk。

一便便💩

使用Cloudkit,以及在iOS和Swift中进行本地化 因此,我的最新应用程序在8个月内就淘汰了8个应用程序(现在我最多有6个应用程序,其中3个贴纸包为1个,所以我提前了)。 我想要通过这些应用实现的部分工作是学习新知识。 到目前为止,我的冒险经历是我使用Photos和HealthKit以及其他我以前不曾使用过的组件。 对于下一个应用程序,我决定看一下CloudKit。 跨设备同步总是给开发人员带来痛苦,尤其是当您不想创造糟糕的体验并且用户期望这些东西能够正常工作时。 我最新的应用程序非常简单。 尽管我和我的朋友都长大了,但我们仍然有愚蠢的一面。 有时候,我们可能会为年轻时的歌曲键入歌词,或者只是发送表情符号。 为此,我构建了“一堆便便”,这是一种创建单个字符或整个短语(如合唱)重复的简单方法。 第一个版本现已发布,但我已经开始着手进行下一个更新,即cloudkit集成。 我不确定它会多么复杂,但实际上非常简单。 通过开发门户网站创建容器后,创建记录很简单,就像创建对象和调用保存方法一样。 与典型的关系数据库不同,不需要预先定义“方案”。 当创建“ recordType”的对象时(从关系的角度来说,这可以是您想要称为“表”的任何对象)。 然后保存对象会自动创建架构。 您可以在Container仪表板中定义不同的索引,但是会为您创建一个唯一的ID。 让容器= CKContainer(标识符:AppConstants.containerIdentifier) 让db = container.privateCloudDatabase let record = CKRecord(recordType:“ MyRecordType”) record [“ text”] =“某些文本”作为CKRecordValue db.save(record,completeHandler:{记录,错误 如果让err =错误{ // print(err) } }) 您可以访问3种类型的容器来保存数据。 公共-公共容器正好在罐头上写着。 上市。 使用您的应用的任何人都可以访问任何记录。 苹果免费提供大量空间。 私有–私有容器对用户是私有的,并且使用他们自己的iCloud存储空间。 即使作为应用程序的开发人员,您也无法查看他人的私人记录,只能查看您自己的记录。 这是一件好事! 这表明苹果非常重视隐私。 共享–共享容器再次非常明显。 它们基本上是私有容器,用户可以在其中允许其联系人的特定子集查看和编辑相同的数据。 一个简单的例子可能是同一家庭成员之间共享的待办事项清单。 检索记录也非常容易。 基本上,您可以定义要检索的recordTypes并调用适当的方法。 实际上,它是如此简单,我不知道为什么我没有更早开始使用它。 我正在认真考虑重新访问一些较旧的应用程序并集成Cloudkit。 […]