Tag: iOS应用开发

红胡子市场启动Launch

我们非常高兴地宣布推出Redbeard市场。 开发人员和App企业家现在可以购买和下载Redbeard团队开发的Apps源代码。 今天我们将推出2个应用程序Taskeedo,这是一个漂亮的任务管理应用程序,您可以完全免费使用它,而RBnB是受AirBnB启发的克隆版本。 我们知道,您不熟悉iOS开发时会遇到多大的困难。 当试图了解那里的专家如何制定完美的解决方案时,拥有高质量的App作为参考可以产生巨大的变化。 对于在那里的App企业家来说,仅开发并发布其MVP的基本版本可能会非常耗时,并花费数千美元。 Redbeard Marketplace将为您提供学习iOS App开发的绝佳起点,并大大减少您的下一个项目的上市时间。 我们在Redbeard的愿景是开发工具和服务,以在整个应用程序开发生命周期中为开发人员和应用程序企业家提供帮助,因此我们希望在未来几个月内向Redbeard市场添加一系列很棒的优质应用程序(以及发布)。一些出色的工具尚未公布)。 对整个Redbeard团队以及在此过程中提供帮助的每个人,都做得很好。 👏🏼👏🏼 附言:我们目前在Product Hunt的主页上显示!!! 加入那里的对话: 产品搜寻的红胡子市场

适用于本机的CodePush教程

CodePush是一项云服务,可让Cordova和React Native开发人员将移动应用程序更新直接部署到其用户的设备上。 最终用户可以更新应用程序,而无需通过应用程序商店或手动等进行更新。 这篇文章试图解释您的react native项目中codepush的简单实现,这对于大多数常见用法都以为官方文档解释了各种自定义。 首先,您需要通过以下命令在终端中安装基于NodeJs的CLI: npm install -g代码-push-cli 其次,您需要创建一个CodePush帐户。 为此,请首先在终端中键入以下命令: 代码推送寄存器 然后,将要求您提供令牌,同时,您将被引导到自动注册的网页。 如果一切顺利,您将在注册后获得令牌。 复制令牌并将其粘贴到终端中,然后按Enter。 做得好! 您已注册! 现在是时候通过以下命令制作应用了。 请记住,您应该为正在使用的每个平台制作一个单独的应用程序,如下所示: 代码推送应用程序添加MyApp_IOS ios react-native 代码推送应用程序添加MyApp_Android android react-native 每次您运行这些命令时,您都会得到两种代码。 每个平台的分期和生产。 这些代码将在以下步骤中使用。 您可以稍后通过以下命令再次获取这些代码: 代码推送部署ls MyApp_IOS -k 现在,当您位于项目根目录中时,可以通过以下命令轻松将CodePush添加到项目中。 react-native链接react-native-code-push 系统将提示您输入要用于每个平台的部署密钥。 只需提供最后一步的密钥即可。 现在,您需要包装主应用程序组件,以让CodePush管理您的更改。 最简单的形式是以下形式。 它将尝试立即自动更新该应用程序(如果有新应用程序)。 从“ react-native-code-push”导入codePush; MyApp类扩展了Component { componentDidMount(){ codePush.sync(); } //逻辑,渲染… } MyApp = codePush(MyApp); 如果您可以通过这种方式更新应用程序,则可以跳过此部分并跳到下一步。 但是由于可能不是您要寻找的用户体验,因此另一种方法是使用户知道该更新。 您还可以执行许多其他策略(例如:使更新成为可选的),但是我们要寻找的是在通知最终用户之后,使用自定义消息和按钮标题进行的强制更新。 我们通过下面的一段代码来做到这一点: […]

如何从头开始在Swift中实现MVVM模式

在深入研究代码之前,这里是对该模式的快速介绍。 MVVM代表模型,视图,视图模型,这是一种特定的体系结构,其中视图模型位于视图和模型之间,提供模仿UI组件的接口。 通过“绑定”值(将逻辑数据链接到UI)来建立此连接。 在iOS应用中,这种MVVM方法中的View元素通常是UIViewController本身。 这种方法的好处是代码变得更加模块化,易于维护和测试。 现在让我们进入代码。 模型 与api模型匹配,这是我的两个结构开始。 struct CurrencyRate { let currencyIso : String let rate : Double } struct Converter { let base : String let date : String let rates : [CurrencyRate] } 我还创建了一个特定的服务来创建一个api请求以及我的Converter实现的解析器协议。 您可以在该文章末尾的Github存储库中找到这些源代码。 这并不是真正与MVVM相关的,因此我将直接进入我们的ViewModel和绑定系统。 视图模型 首先,为了能够将ViewModel的值绑定到View,我们需要具有可观察模式的元素。 在iOS中,我们可以使用KVO模式添加和删除观察者,但我认为我们可以使用“ didSet”观察者做得更好。 让我们记住,我们要随着时间的推移执行特定的代码,而该代码已更改。 我们还可以假设我们的对象可以有多个等待更新的观察者。 为此,我创建了一个类,其中包含一个观察者及其更新时要执行的代码的字典(此处为闭包)。 在这里看起来像什么。 typealias CompletionHandler = (() -> Void) class DynamicValue […]

积极的反应:使用React.js进行开发

自2016年11月发布以来,在开发社区中已经有大量关于React和React Native的话题。 不知不觉中,React是Facebook的开源JavaScript库,目前在许多主要网站上使用。 但是,它的姊妹项目React Native使应用程序开发人员能够仅使用JavaScript来创建本机应用程序。 对于任何Web开发人员而言,结合HTML和JavaScript开发的潜力都是巨大的,特别是在React成功构建网站界面之后。 React Native允许您创建直接转换为本机组件的React组件。 然后可以在保留其样式的情况下在应用程序的将来区域中重用这些组件。 它们本质上是您应用程序的构建块。 与传统的本机开发方法相比,使用React Native的优势很多。 使用React Native时,组件将在多个平台上实现一致的渲染,而使用其他类似的解决方案可能会导致性能不一致,这是市场上越来越多的设备池的真正风险。 尽管使用其他非本机框架进行的开发也涉及JavaScript,但它们倾向于在本机应用程序中嵌入的Webview中运行,这使过程更加复杂。 React Native运行JavaScriptCore的嵌入式实例,该实例与特定于平台的本机组件进行通信。 React Native不仅会更改创建可行的本机应用程序所需的步骤; 它通过强调声明性语法,函数式编程和单向数据流,极大地改变了现有的范例。 当从一个州转移到另一个州时,这也使隔离问题和解决错误变得更加容易。 使用React Native的视图声明,当用户操作您的应用程序时,管理任何可能的意外情况变得更加容易。 根据我在React Native上与其他类似框架相比的经验,确实感觉前者比后者更能巧妙地架起Android和iOS之间的鸿沟。 现有的框架经常谈论使应用看起来像是两个平台都原生的,只是为了使最终的应用看起来像它们都不属于两者。 另外,React Native的核心是JavaScript。 从根本上讲,该平台与React.js并没有特别的不同,它使具有以前开发经验的新手可以轻松地适应它。 当然,它还可以提高效率,并允许您继承已经熟悉的技术和快捷方式。 由于仍是React,Native使开发人员能够轻松集成现有的JavaScript / React.js库,这在Facebook的鼓励下。 有些组件比其他组件更适合与React配合使用,其中Redux和MobX因其简化了应用程序状态管理的能力而受到关注。 当然,React还有很多东西。 作为iOS开发人员,我很欣赏它能够扩展我设计的潜在平台的能力,而无需花费很多精力。 并且,鉴于其相对的新近度,我期待看到React Native社区如何继续激发移动开发领域的发展。 最初发布在http://damianesteban.com/positive-reactions-developing-with-react-js/。

iPhone App开发服务构建独特的应用程序

iPhone App开发服务构建独特的应用程序 在这个智能手机时代,移动公司必须经常开发一个出色的应用程序。 苹果公司一直是从事开发出色创新应用程序的顶级公司。 全部归功于Apple的iPhone App开发团队! iPhone应用程序开发人员的重要性 随着智能小工具市场的不断创新,必须始终开发出良好且有用的应用程序。 设计这样的应用程序并不是小菜一碟; 而是由敬业,勤奋和技术精湛的专业人员组成的团队合作。 iPhone应用程序开发服务 雇用iPhone App Development公司的服务是满足iPhone应用程序开发需求的最终选择。 iPhone应用程序专业开发人员提供的服务始终是出色的,并且全力以赴。 这些服务为来自不同行业的客户提供定制的iPhone应用程序开发服务以及营销解决方案。 这些服务致力于以可承受的价格提供专用的优质服务。 开发iPhone应用程序解决方案需要专业的方法,而专业的iPhone App开发服务始终可以使用这种方法。 这些服务结合专业性为iPhone应用程序开发提供了创新的方法。 几乎所有iPhone App开发公司的交易都提供各种服务,例如: ·iPhone应用程序设计与开发 ·定制iPhone应用程序 ·iPhone应用程序的计划和实施 ·iPhone应用程序软件的体系结构和布局 ·与iPhone应用程序的第三方集成 ·企业软件定制 ·开发和测试服务 ·质量提升服务 ·iPhone应用程序的升级,增强和修改 ·支持和维护服务 ·在iPhone上迁移和移植应用程序 ·iPhone游戏设计与开发 创新,快速,结果优化和安全的iPhone应用程序始终以可承受的成本开发。 iPhone应用程序开发公司的专业人员的巨大努力总是值得的,因为他们会使用优质的力量来开发iPhone应用程序。

引入AlamofireSafariLogger —一个轻量级的Alamofire网络通话监控库

在开发周期中,我花了大量时间进行网络调试。 在android中,我们有Stetho。 我可以在没有Android Studio的Chrome网络检查器上查看所有请求和响应。 在iOS开发中,我使用控制台日志或Charles,这需要在特定的macOS上进行一些设置(或许可)。 我已经在iOS开发上找到了Stetho等效的设备,但是它没有简单的解决方案。 我写AlamofireSafariLogger是因为我想更轻松地进行网络呼叫调试。 最终结果是,我记录了从Alamofire到Safari Web检查器的所有请求和响应。 与Stetho不同,我不是在“网络”选项卡中而是在“控制台”选项卡中登录。 最终结果如下所示。 设定 pod’AlamofireSafariLogger’ 在您的appDelegate中, func application(_ application:UIApplication,didFinishLaunchingWithOptions launchOptions:[UIApplicationLaunchOptionsKey:Any]?)->布尔{ //添加此startLogging()行 AlamofireSafariLogger.shared.startLogging() // … } 而已。 现在,您需要在Safari中启用开发菜单。 在Safari Perference>高级>选中“在菜单栏中显示开发菜单” 如果您要使用设备进行调试,请打开“设置”> Safari>“高级”>启用“ Web检查器”。 当您的应用程序运行时,您会在开发人员标签下找到“ about:blank”。 单击它,您现在可以使用Web检查器调试alamofire网络通话! 当前设计中的控制台日志级别: 标题:日志 身体:警告 错误:错误

Agilizando o layout com ViewCode

UIKit的速度与iOS 7的发布速度无关。 电子地图的布局可能与iPhone的外观和外观有所不同。 在iOS平台上的最高性能,以下三种格式:故事板,Xib或ViewCode。 讨论高级质量问题的通告。 瓜尔·戈斯塔里亚·德·梅尔哈尔因不同的理由而存在,并以优胜劣汰的形式存在,并在ViewCode上被法院起诉。 使用Xcode可以使您的故事重新开始,使用Storyboard进行聊天,也可以使用其他人来进行聊天。 1.移除参考故事板的Info.plist 2.删除Main.storyboardcriéautoamente criado Ao tentar rodar o projeto agora vai tomar uma bela tela preta,poisnãohánenhum ViewController sendo inicializado🙁 Para consertar isso,vamos botar或ViewController.swift参数 Abra或AppDelegate.swift或方法_didFinishLaunchingWithOptions_ como abaixo: 集市,实用程序或ViewTable参数自定义UITableViewCell自定义视图,并自动布局视图。 Mais uma vantagem通过Storyboard通过String nas propriedades做ViewCodeéo fato dacélulanãoter o identificador。 服装的基本单元或协议的参数标识符和细胞高度 。 复制程序的简单格式适用于使用ViewController的类。 Essapráticadificulta os erros de escrita nas字符串pos utilizamos semper tipos definidos […]

在iOS 11应用程序中使用自动布局

您是否曾经尝试过让应用在横向和纵向上都看起来不错? 分开查看风景和肖像是否令人沮丧? 制作同时支持iPhone和iPad的屏幕布局会让您发疯吗? 如果是,我将带给您一些好的做法,以克服构建支持从方向到不同屏幕尺寸的所有内容的UI的所有障碍。 Autolayout不仅使您可以轻松地在应用中支持不同的屏幕尺寸,而且还使国际化变得微不足道。 您不再需要为每种希望支持的语言制作新的笔尖或情节提要,其中包括从右到左的语言,例如希伯来语或阿拉伯语。 在此自动版式教程中,您将了解: 支持纵向和横向的应用程序 iPhone和iPad的支持应用程序 学习如何使用约束来布局视图 使用尺寸类在不同坐标下显示视图元素 使用堆栈视图可以简化布局复杂的UI的工作 我们的示例应用 图1 —在横向模式下查看(iPhone X) 图2 —以纵向模式查看(iPhone X) 图1和图2显示了我们将在本教程中构建的示例应用程序。 该应用程序支持横向和纵向方向,并且在构建时牢记iPhone和iPad的屏幕尺寸。 自动布局的基础 固定菜单 它位于编辑器的右下角,用于向不同的视图元素(如标签,按钮,文本字段)添加约束。 这些约束不过是不同视图边界之间的关系。 约束可以固定,也可以在运行时更改以达到动画目的。 图3 — Pin菜单 对齐菜单 它位于图钉菜单的左侧,可用于水平和垂直对齐中心的视图。 图4 —对齐菜单 文件大纲 它位于编辑器的左侧,可用于查看视图的层次结构,还可以查看特定视图控制器内部添加的所有约束。 图5 —文档大纲 属性检查器 这用于自定义视图属性,例如背景颜色和字体。 属性检查器 摆出我们的观点 首先,我们将一个视图添加到视图控制器并为其添加约束。 在对象库中搜索UIView并将其拖动到视图控制器中。 添加您喜欢的任何颜色并添加约束,以使视图固定在屏幕的左上角。 选择视图并打开图钉菜单并使用以下约束: 图7 —向视图添加约束 图7显示视图的高度和宽度等于75,并且顶部锚点和左侧锚点设置为8,这基本上意味着无论是iPhone或iPad,还是横向或纵向设备,视图始终具有距离视图控制器左上角的距离为8。 添加这些约束后,我们的视图控制器就是这样。 图8 —示例应用程序 添加视图和为其添加约束似乎很容易,对吗? 但是您应该永远记住,编程并不是要一次又一次地重复相同的步骤。 让我们假设我们以刚才的方式构建UI。 我们的视图控制器中总共有20个矩形,对于每个视图,我们都必须添加约束,同时要记住每个与特定视图边界接触的视图之间的关系。 […]

办公空间:我们最好的时刻

在这里工作是授权。 这使我的工作变得异常重要和正式。 并没有真正的着装要求,但是如果我在工作中穿着不好,我会觉得有些不合时宜。 该建筑是SOHO集团的一部分,该集团是位于北京和上海的标志性建筑的网络。 SOHO中国董事长潘石屹和他的妻子张欣被认为是中国最大的房地产开发商,据称颇为夸张。 在这两个月的工作中,潘石屹在办公室停了几天。 每次他这样做,就好像布拉德·皮特(Brad Pitt)穿过办公室一样。 一次,他与其他超级英雄一起穿着美国队长的服装来到我们的办公室,以此来推广一家名为e le ma(饿了吗-或实际上是“您饿了吗?”)的新食品配送创业公司。 我永远不会忘记那天充满大厅的激动。 在Soho3q签订合同后,我们靠近了北京最繁忙的地区之一,来到了三里屯(Sanlitun)地区。 科技庙 我们的下一个共享办公空间被称为Tech Temple。 在北京,实际上有不止一个科技庙,您可能在网上读到的那个庙不是我工作过的。 我在刚刚开业的较小的Tech Temple工作。 因此,我们是新办公室的测试小组。 有时互联网无法正常工作,有时咖啡馆被关闭,或者有一次办公室下面的烧烤店着火了。 在Tech Temple工作的第一天,我不小心去了他们的主要住所,而不是去了新住所。 而男孩,有一个原因是他们将注意力集中在那个位置上。 与三里屯相比,它总体上更宽敞,装饰精美。 但是,我相信我在两个办公室都能保持同样的生产力。 Tech Temple成了我远离家乡的家。 我经常呆在那里直到深夜,在附近一些很棒的餐厅吃午餐和晚餐。 靠近购物区太古里(Tai Koo Li),可以轻松拿起我需要的东西,而且我经常在我办公室附近的酒吧和啤酒厂找到我的朋友。 我绝对喜欢这个位置,我真的无法要求一个更好的位置拥有一个办公室。 然而,可悲的是,就像所有事情一样,我在中国的生活结束了,我不得不离开科技寺和北京。 可可 回到家(明尼苏达州)一段时间后,我发现我真的很想念与我的同事空间相伴的感觉,以及一群富有生产力且专注的人的环境。 因此,我决定在明尼阿波利斯考察我的合作选择! 经过四处搜寻,我们认为CoCo对我而言是最佳选择。 我首先通过他们在此处举办的活动找到了CoCo,该活动在名为Meetup的应用程序中列出。 我看到一家新的精酿啤酒杂志的首席执行官讲述了他作为企业家的经历。 一旦我涉足CoCo的市区(他们举办活动的地方),我就知道我想成为这个社区的一员。 市区的空间绝对令人难以置信,位于市区美丽的一间房。 但是,有了我的会员资格,我可以去5个不同的CoCo地点中的任何一个,并且由于我的家离市区很远,所以我在另一个地点花费了更多的时间。 有一件大事使在CoCo的工作比任何一个中国共同工作的地方都更加快乐,并且能够流利地讲这种语言! 在中国,尽管我想与同事互动并与他们交谈,但我的中文能力根本无法达到这个水平。 能够真正认识我周围的人并了解他们正在从事的工作是鼓舞,振奋和激励人心的。 CoCo在安排定期的欢乐时光,午餐和学习以及特别活动方面也做得非常出色。 我觉得总有事情发生! 即使Tech Temple和Soho3q发生了类似的事情,我也永远无法发现,进行社交将变得更加困难。 在美国和中国的共享办公空间中体验了生活之后,我想快速解决一些最大的差异。 中国诉美国 中美和美国的共享办公空间之间有一些主要区别。根据我的经验,到目前为止,美国的共享办公空间要安静得多。 这不是因为人们正在努力工作或做任何事情,而是因为人们习惯在美国工作时将手机静音,这是更常见的做法。 在中国,情况并非如此。 […]

通过LLDB表达式动态修改UI

情境 假设您作为iOS开发人员正在开发应用程序的UI组件。 您的PM来了,轻拍您的肩膀以请求更改特定按钮上的颜色。 通常在这种情况下,开发人员会感到不满意,因为这意味着他必须转到代码库来确定与按钮相关的代码的范围,更改其color属性,然后重建并运行该应用程序以验证颜色是否成功更改。 如果这样的请求不是那么频繁,那不是什么大麻烦。 但是,项目经理或设计师可能仍然有问题,请您反复尝试按钮上的不同颜色,直到他们对视觉效果满意为止。 我们是否必须修复代码并重新运行以检查一遍又一遍的agian? 有没有更有效的方法来实现这一目标? 答案是肯定的。 我们甚至不需要更改一行代码就可以做到。 魔术是LLDB表达式。 演示版 让我们有一个在iPhone模拟器上运行的非常简单的应用程序-只需单击视图上的一个按钮即可。 要进入调试模式,我们可以单击工具栏上的暂停按钮: 然后,我们可以输入以下命令: po [[[UIApplication sharedApplication] keyWindow] recursiveDescription] 此命令将打印出与视图层次结构有关的所有信息,包括其在内存中的地址及其布局。 它告诉我们按钮为0x7fb0c5f15900。 因此,让我们从内存中获取它: expression — id $testView = (id)0x7fb0c5f15900 expression表示执行以下命令并打印出结果,此处我们尝试将按钮传递给testView。 现在可以修改按钮的颜色了。 在testView上使用expression命令,我们刚刚获取: //将按钮的颜色设置为红色 expression — (void)[$testView setBackgroundColor:[UIColor redColor]] 为了见证更改,我们需要通过键入以下命令来刷新UI: expression — (void)[CATransaction flush] 然后您将看到按钮按预期变为红色! 总览 本文仅显示了一种使用LLDB表达式处理UI的方法。 LLDB是一个功能强大的工具,使我们能够设置按钮的文本,边框,甚至导航到另一个页面。 对于expression命令,它实际上是p和po的别名; p与expression –相同,而po等于expression -O — expression。 有关更多用法,请尝试使用help expression进行查找。