Discore.io-这是什么,为什么我们要这样做?

我们在2016年发现了碟式高尔夫,而我们的第一场比赛就是练习掷球。 那时我们很高兴能将光碟放入篮中不到五次! 但是,玩的越多,我们越想保存分数并将其与我们的朋友进行比较。 我们开始使用Skoorin.com,但很快就意识到该程序非常脆弱, 移动版本不是用户友好型的,很难找到您自己的历史得分,而且我们认为很多重要的功能缺失(例如,得分图,社交功能和独自玩耍的动机)。 作为一个IT团队,我们在一个周末聚会,并创建了即将成为终极光盘高尔夫应用程序的第一个Beta版本,我们现在将其称为Discore。 创建Discore.io的目的是为碟形高尔夫球爱好者提供更好的用户体验,并在少数几种可用的碟形高尔夫球记分卡应用程序中提供新的选择。 在Thorgate,我们重视出色的用户体验,因此我们竭尽全力确保Discore直观,健壮和有用。 我们的目标是无论身在何处,都能轻松自发播放。 为此,我们创建了快速搜索功能以查找最近的课程,选择要玩的朋友(或添加新朋友)的简便方法以及输入分数的超级简便方法。 由于碟式高尔夫是一种社交游戏,我们让Discore记住了您上一次玩过的朋友,因此您不必每次都进行搜索,只需从建议列表中添加即可。 我们还尝试了各种输入分数的方法,以找到一种非常用户友好的方法。 我们的第一个想法是: 当我们去Nmmme的碟形高尔夫球场进行测试时,我们真的很喜欢站在森林里拿着自己的应用程序🙂但是,我们很快就知道,输入结果的方法并不舒服。 现在,我们依靠传统的数字键盘。 到目前为止,我们已经开发了以下功能: 创建游戏-课程和玩家选择,输入分数 邀请新用户(尚未使用Discore.io的用户) 游戏统计信息,包括得分图 您自己的统计数据 评分(尽管目前用户看不到它们)。 我们尝试使用两种不同的评分系统:PDGA评分和ELO评分-两者相辅相成,并且相结合时,会给游戏带来更多刺激。 每个课程的前十名排行榜 如果您可以尝试https://discore.io并提供宝贵的反馈意见,我们将不胜感激。 我们还有一个iOS应用程序,您可以从此处下载:https://itunes.apple.com/us/app/discore/id1160143224?mt=8

应用启动板

我尝试了AppLaunchpad,上传了五个HyperBowl屏幕截图。 五,因为AppLaunchpad会生成一组屏幕尺寸的iPhone样机图像,并带有用于App Store的标题(五是App Store显示的最大屏幕截图数量)。 从这个意义上说,它很有用,因为它可以为所有iPhone屏幕尺寸生成图像,尽管不同的iPhone 4纵横比是一个问题,因为您可以看到此处的保龄球明显变平了。 其他限制:我看不到对横向或iPad屏幕的任何支持,尽管提供了几种颜色组合,但仍然找不到我喜欢的颜色。 尽管如此,我认为它在HyperBowl(itch.io)页面上看起来不错,并且我可能会在App Store上尝试一下,至少可以生成iPhone 6/7 +大小的屏幕截图。

iOS中的导航器– Marc StevenCoder –中

在iOS中,存在从ScreenA到Screen B的基本数据流。 您的ViewController A可能具有以下内容: override func tableView(_ tableView:UITableView,didSelectRowAt indexPath:IndexPath) { let detailsData = tableData[indexPath.row] let detailViewController = ViewControllerB() detailViewController.data = detailData navigationController?.pushViewController(detailViewController,animated:true) } 您的viewcontrollerB可能有这样的东西: init() { navigationItem:rightBarButtonItem = UIBarButtonItem(title:”Go to ViewController c!”,style:.plain,target:self,action:#selector(didTapGoButton)) } func didTapGoButton() { let followingViewController = ViewControllerC() navigationController?.pushViewController(nextVC,animated:true) } 但是,这有什么问题呢? 大多数开发人员每天都会以标准动作编写此代码。 ViewController的作用: 1,父母 2,孩子 3,老板 在ViewControllerA中,有很多工作要做。 有什么问题? ViewController不是独立的 viewController依赖n有可以做某些事情的父母 ViewController做得太多(流程,演示等等) 解决方案v1:委派 []() […]

ARKit 1.5 —墙上的另一块砖头♪(什么墙?)

故事作者: nomtek的 iOS开发人员 Przemek Olszacki 具有iOS 11.3的Apple正在更新其AR平台-ARKit。 正如我们可以在他们的网站上阅读的那样,它添加了一项重要的新功能-垂直表面检测。 “除了桌子和椅子之类的水平表面之外,ARKit现在还可以识别虚拟物体并将其放置在垂直表面上,例如墙壁和门(…)” 苹果 如果这个新功能与检测水平表面一样好,那可能真是太好了! 想象一下所有允许您在不绘制墙壁轮廓的情况下装饰墙壁的应用程序。 想知道该挑选哪个壁纸? 没问题,会有一个应用程序可以向您显示墙壁的外观。 它还可以改善现有AR应用程序中的用户体验。 让我们举一个例子,如我们在上一篇文章中所描述的应用程序-Room Scanner。 目前,您必须四处走动才能获得准确的测量结果。 如果ARKit能够检测到墙壁,则进行测量就如同将设备指向墙壁的方向一样简单。 让我们对其进行测试! 为了测试新功能,我编写了应用程序,使我能够查看检测到的平面(水平和垂直)。 对于每个检测到的平面,它都会绘制一个网格,大致显示ARKit如何看到该表面。 足够的理论。 这是我制作的视频,因此您可以亲眼看到它的运行状况: 失望了吗 我也是… 期望与(增强)现实 在苹果公司的网站上阅读该笔记时,我们大多数人期望垂直表面的检测至少与水平表面一样好。 不幸的是,事实并非如此。 经过测试,我得出的结论是,它仅适用于具有明显特征的表面(例如,悬挂照片,文字或艺术品)。 如果表面是平整的(如单色的墙壁)或只有很少的小特征,则不会检测到。 这意味着大多数墙对于ARKit都是不可见的。 伤心。 您如何看待ARKit更新? 对你起作用吗? 在评论中分享您的经验! 伙计们,让我们保持联系!

FileMaker 17平台有哪些新增功能?

快速回顾 发展历程 事半功倍 主从布局 —利用新的门户增强功能创建常见的设计模式,如主从布局。 通过消除创建自联接关系和其他脚本的需要,节省了宝贵的开发时间。 组对象选择 —轻松修改,重新定位或调整组中单个对象的大小,而无需首先取消所有对象的分组。 重新设计的版面模式 -体验更简化的环境来创建版面。 通过文档窗口内的方便窗格,可以更方便地发现“检查器”,“字段”选项卡和“对象”选项卡。 分别隐藏或显示窗格。 默认字段 -添加新表时,将自动创建显示记录创建信息的字段。 这些字段包括主键,创建日期,修改日期以及创建或修改该字段的人。 可以根据需要自定义默认字段,也可以预先配置默认字段。 脚本增强功能 —通过增强的脚本步骤创建更多可重用的代码。 在输入字段中添加变量,以在“ 显示自定义对话框”中填充和检索支持变量的文本。 在“ 执行脚本”步骤中,使用新的“指定的”选项从列表中选择一个脚本或通过计算指定脚本名称。 我的应用程序窗口 -从一个方便的窗口中启动任何自定义应用程序。 轻松导航至“最近”选项卡以查找最近打开的文件,然后导航至“创建”选项卡以查找新的Starter应用程序。 多个电子邮件附件支持 -将多个文件附加到电子邮件中,可以更灵活地与客户或团队进行沟通。 复制和粘贴自定义菜单 -通过在您创建的其他应用程序中重复使用自定义菜单来节省时间。 只需复制菜单集,菜单和菜单项,然后将它们粘贴到另一个文件中即可。 流动性 随时随地做更多 感官感知 —无论您是在洞穴中速降,乘坐云霄飞车还是进行其他类型的田野研究,都可以使用新的传感器支持功能在iPad和iPhone上自动收集数据。 使用新的计算功能,移动应用程序可以从iPad或iPhone设备中的iOS传感器捕获信息,包括位置,气压,加速度计,磁力计,陀螺仪,气压计和电池电量。 自动完成 -使用文本字段中的自动完成功能,在FileMaker Go中更快,更准确地输入数据。 输入一个或两个字母,并立即查看与您键入的内容匹配的下拉列表。 键盘快捷键 -使用iOS设备的外部键盘(例如,智能键盘)现在支持的键盘快捷键来提高效率。 拖放 —在运行iOS 11的iPad上的应用程序之间进行文本,照片和文件的拖放(至少),可以更快地进行操作。 新的FileMaker数据迁移工具 导入大数据集时,从几天到几小时,或者从几小时到几分钟。 此新的省时命令行工具可帮助您立即更新已部署的自定义应用程序。 可通过FileMaker Developer Subscription获得数据迁移工具。 改进的iOS App SDK 连接到其他数据源,并从FileMaker应用中获取更多信息 改进的iOS […]

与Jenkins和Fastlane的iOS持续集成和交付(第1部分)

在这一部分中,我们将: 了解什么是持续集成和持续交付以及为何如此重要 在MacMini上设置Jenkins 创建一个构建作业,从Github存储库中签出您的项目 在构建服务器(以及本地开发计算机)上安装fastlane工具 将fastlane集成到您的项目中并创建示例车道 请注意,我使用MacMini作为专用的构建服务器。 如果您使用的是MacBook,也可以阅读本文。 但是,在生产场景中,您可能要避免在执行自动构建的本地计算机上运行Jenkins。 1.什么是持续集成和持续交付? 持续集成(CI)是一种软件工程实践,通常将孤立的更改集成到较大的代码库中并立即对其进行测试。 持续集成的目标是验证这些更改的正确性,并尽快检测出集成错误。 为此,在每次集成后运行自动化测试是很普遍的。 连续交付(CD)是构建可以随时发布到生产环境的软件的功能。 持续交付的目标是确保软件代码始终处于可部署状态,无论它包括新功能还是仅包含错误修复。 2. CI和CD为什么重要? 每个与许多开发人员一起在开发团队中工作过的人都知道,将团队成员一直在努力的不同分支整合在一起可能会带来问题。 即使没有任何合并冲突,也总是有可能您在不注意或破坏构建的情况下弄乱了某些功能。 如果您使用的是持续集成,则更改将在集成之后立即进行测试,如果有任何问题,几乎会立即通知您。 频繁执行集成测试可确保大大降低交付损坏功能的风险。 频繁执行集成测试可确保大大降低交付损坏功能的风险。 除了对新功能和变更进行测试之外,能够随时发货也很重要。 想象一下,在最新的生产版本中存在一个严重的错误,您需要尽快发布一个错误修正版本。 如果您的交付过程花了几天时间才能准备好发布,这可能已经太迟了,有些用户已经卸载了您的应用程序。 3.为什么要在iOS项目中使用CI / CD? 无论您是定期将内部版本上传到测试服务(如TestFlight,Beta还是Hockey),还是要在较短的发布周期内提交应用程序更新(应该这样做),您都很可能会浪费大量时间重复以下步骤再三,一而再再而三: 执行回归测试 递增版本/内部版本号 负责签名和配置 上载到iTunes Connect 更新AppStore截图和元数据 考虑一下如何可以做一些有生产力的事情。 好在,这是个好消息:您可以轻松地自动化此繁琐的过程。 🚀 4.在MacMini上设置Jenkins 1.重新安装Mac OS X(在本文撰写时为Sierra) 2.创建一个新的管理员用户帐户。 (詹金斯稍后会创建一个单独的用户帐户) 3.从www.jenkins.io下载最新的Mac OS安装程序并运行它。 或者,您可以使用自制软件安装Jenkins( brew install jenkins) 4.安装程序完成后,它将自动打开浏览器并转到http:// localhost:8080,这是您的jenkins的本地地址。 (如果您是Mac OS的全新安装,则需要先安装Java。只需打开终端,输入jave并选择More Info…或从此处下载最新版本的JDK)。 […]

TIL:重新定基

当我第一次开始基础调整时,我发现它令人恐惧。 我认为肯定需要进行重大更改,覆盖我为特定分支所做的所有工作,而成功做到这一点是不可能的。 但是,经过几次失败的尝试,我实际上可以说我在另一边还活着,现在,我喜欢变基!!! 因此,对于外行来说,这是您需要重新设置基准的方案: –您是从master分支开始的,但是其他人同时将他们的更改合并到master,因此您需要合并这些更改。 应用更改的最好方法是重新设置基准。 如果将rebase命名为其他名称,例如说“ update”或“ modernize”或“ get-wid-it”,我认为更多的人会发现rebasing很有趣。 首先,在尝试重新设置基准之前,可以通过备份所做的更改使自己省心。 您可以通过以下方式做到这一点: 创建一个临时分支,该分支将冻结您的分支更改,直到重新定基础 复制并保存您已更改的任何文件,或将整个项目本地保存在计算机上 因此,现在,世界就在您的牡蛎上,而您必须彻底出错,才能完全失去所有工作。 因此,这是有关如何重新设置基准的简短教程: 在分支机构的基础项目目录中,在终端中运行: git rebase master -i ←’i’表示交互式,它使您可以管理和修改提交历史记录。 您将在分支上看到提交列表,并且可以选择pick , squash , drop等等。它们中的每一个都是有用的,并且具有不同的用途,但是为了简单起见,在本教程中,我不再赘述。 您可以按原样离开并pick每个提交(或压缩除第一个提交以外的所有提交)。 如果没有合并冲突,您将看到以下消息: Successfully rebased and updated refs/heads/your-branch-name. 但是,您可能会有合并冲突。 同样, merge conflicts是一个令人恐惧的名称-如果将其称为“需要编辑”或“选择武器”或“购物”,它将更容易获得。 因此,这是纠正合并冲突的方法: git status ←这将向您显示哪些文件存在合并冲突 open file-name-that-has-merge-conflict ←然后,在IDE中打开每个文件,然后选择所需的代码(您将在HEAD上看到该版本,并在本地分支上看到该版本)。 git add file-name-that-had-merge-conflict ←添加/保存更改 git rebase –continue ←继续基础 您可能需要重复上述步骤几次(每次正在处理的提交中存在合并冲突时,一次)。 最后,您应该看到令人垂涎的消息: […]

Photogram 2构建和发布您的应用

我们如何拥有一个有效的应用程序,我们已准备好将其推向世界! 由于Ionic团队已将本指南中的Todo应用程序提交至应用程序商店,因此您可能想在本章中继续使用自己制作的新应用程序。 因此,首先,我们需要针对希望部署的每个平台生成应用程序的发布版本。 在部署之前,我们应该注意调整开发期间所需的插件,这些插件不应该处于生产模式。 Android发布 要生成Android的发行版本,我们可以使用以下cordova cli命令: $ cordova build –release android 这将基于config.xml的设置生成一个发行版本。 Ionic应用程序将在此文件中具有预设的默认值,但是如果您需要自定义应用程序的构建方式,则可以编辑此文件以适合您的首选项。 请查阅config.xml文件文档以获取更多信息。 接下来,我们可以在platforms/android/build/outputs/apk找到未签名的 APK文件。 在我们的示例中,文件为platforms/android/build/outputs/apk/HelloWorld-release-unsigned.apk 。 现在,我们需要对未签名的APK进行签名并在其上运行对齐工具以对其进行优化,并为应用商店做好准备。 如果您已经具有签名密钥,请跳过这些步骤,而改用该步骤。 让我们使用JDK随附的keytool命令生成私钥。 如果找不到此工具,请参考安装指南: $ keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 首先将提示您为密钥库创建密码。 然后,回答其余好工具的问题,当所有这些完成后,您应该在当前目录中创建一个名为my-release-key.keystore的文件。 注意 :请确保将此文件保存在安全的地方,如果丢失,将无法向您的应用提交更新! 现在,打开您的photogram2文件夹,并根据您的环境更改文件build.json : 在进行构建之前,我们将允许执行一些脚本,以帮助您进行构建 $ chmod 755 ./bin/* 创建一个名为releases的文件夹,该文件夹将生成您的APK以发布到Google Play $ mkdir releases 每当您为Google Play生成apk时,您都可以输入此命令,以便自动运行生产的整个构建过程 […]

iOS应用:小费计算器

目标 :构建可自动计算不同小费金额的小费计算器iOS应用。 代码 :查看我的代码存储库以获取完整的代码。 👩🏻💻 摘自:我不得不认真思考如何在用户点击其他小费按钮时动态更新应用程序以计算正确的小费金额。 主要突破是连接提示按钮。 在iOS中,按钮是分段的数组,每个按钮都可以表示为数组的索引。 一旦我意识到🦉,那么真正的问题就是创建提示[18%,20%,25%]数组,该数组映射到相应的按钮段索引。 例如)分段按钮索引0映射到我的笔尖数组18%。 (基于零的索引) 最后,将视图链接到Swift内的函数或变量对我而言是一个神奇的时刻。 😮我❤️iOS应用程序的编码非常直观,就像我在调试器中编码一样。 快去吧! 👩🏻💻 让我们打开Xcode。 文件>新建>项目>单视图应用 产品名称:tippy 团队:这是您在MacBook上向Xcode注册的团队名称 组织名称:保留默认值 组织标识符:这是您的网站名称,但DNS顺序相反。 按下一步>将其保存在桌面上>创建 小费应用程式启动 注意按一下此按钮,很少有面板切换可以打开/关闭左侧和右侧面板。 接下来,单击Main.StoryBoard 单击View Controller内的大框以选择>单击文档图标(文件检查器)>取消选中“使用自动版式”复选框 双击放大 在对象库中搜索ui标签并将其拖到主应用程序视图中:“ uilabel” 将标签放置在主应用程序视图的左上角 接下来,在Objec(Obj)库(lib)中搜索“ uiview”>选择“视图”元素>拖入主视图区域。 3,元素Search Obj Lib:“按钮”并拖入主应用程序视图。 查看左侧面板,查看已添加的所有元素的列表。 这类似于Photoshop中的图层视图。 接下来,单击面板的右上角>选择“属性”图标 尝试更改“视图”图标的背景颜色:单击“视图”>确保“属性”图标突出显示为蓝色>将背景颜色更改为浅灰色。 要查看模拟器的选项>单击活动的方案按钮>,您可以看到许多版本的iPhone。 注意:如果您有iPhone Comamand + r(或按播放按钮)以运行模拟器。 我已连接设备,因此现在我可以在iPhone上看到它的运行状态。 或选择iphone 6s模拟器>点击播放按钮(Comamand + r) iOS应用程式)绝对位置可以。 您所看到的一切。 将“标签”移到故事板左侧>单击播放按钮(命令+ r)。 注意更改已反映在您的模拟器上。 […]

在UIkit中创建iOS自定义视图

最初 由 Andres 在2017年10月17日 发布在 www.scalablepath.com 上。 我刚从大学毕业就开始使用iOS。 使用不熟悉的平台和编程语言是一项挑战。 真正使我紧张的是什么? 是创意团队要完成的设计。 出色的设计可以为网站注入新的活力,但它越独特,就越有可能需要在UIKit中创建iOS自定义视图。 作为一个新开发人员,这可能会令人生畏。 本文的目的是解释如何将任何设计转换为功能用户界面元素。 iOS定制视图 视图是应用程序用户界面的基本构建块。 通常,您可以通过将故事板中的视图从库中拖动到画布来在其故事板上创建视图。 但是,有时您需要使用UIKit中的标准“标签”或“按钮”元素创建一个不可用的元素。 这是您需要自定义视图的时间。 顺便说一句,如果本文中的任何术语听起来都不熟悉,您可能需要查看Apple的UIKit文档。 在本文的其余部分,我将假设您具有UIKit和Swift的使用知识。 初始设计 让我们从选择无法在标准UIKit视图中重新创建的设计开始。 我找到了由耿高设计的“圆形进度栏”,它非常适合该法案。 此元素由两个文本标签(标题和副标题)和一个圆形完成指示符组成,该指示符旨在在任务进行时填充灰色轨道。 我们将从创建一个新的Xcode项目并将其命名为CircularProgressBar开始。 文件>新建>项目>单视图应用程序 当我们将创建自定义UIView时,我们需要使用新类CircularProgressBar扩展UIKit的默认UIView。 导入UIKit class CircularProgressBar:UIView { } 有两种向设计中添加标签的方式:通过代码或使用.xib文件。 为了避免进一步的混乱,术语“ xib”和“ nib”通常可以互换使用。 NIB来自“ NeXTSTEP Interface Builder”,这是苹果现已停产的操作系统。 虽然.nib文件已替换为.xib文件,但开发人员仍将其称为“ nibs”。 我喜欢使用.xib文件创建我的iOS自定义视图,因为它们需要较少的编码并且更容易进行更改。 因此,我们执行此操作,并将其命名为CircularProgressBar。 文件>新建>文件,然后选择查看 我们将在导航器中选择CircularProgressBar.xib,然后将.xib的文件所有者定义为我们的类扩展名:CircularProgressBar 等一下,什么是文件所有者? StackOverflow提供了比以往任何时候都更优雅的解释: “文件所有者是一个实例化的运行时对象,在加载.nib时,它拥有.nib的内容及其出口/动作。 它可以是您喜欢的任何类的实例。” 有了这些了解,我们将隐藏状态栏,并将.xib的大小设置为“自由格式”。 这样,我们可以更改尺寸,以便视图具有与设计相似的尺寸。 在这种情况下为300 x […]