Tag: 教程

Jitters先生(适用于iOS)

我们相信,Foursquare API是世界上最先进的位置API,独立开发人员和全球企业都在使用。 作为我们自己的应用程序开发人员,我们想展示将功能强大的位置情报集成到应用程序中有多么简单。 为了突出显示许多应用程序中常见的一些位置端点,我们创建了一个名为Mr. Jitters的示例应用程序。 适用于iOS的Jitters先生可在App Store上获得,也可在GitHub上开源。 我们热爱咖啡,因此我们决定将Swarm广受爱戴的Jitters先生标签贴到手机上,以快速找到世界上最好的咖啡,无论您身在何处。 我们希望采用这种非常简单的概念来寻找咖啡,并在此过程中展示两个Foursquare API端点:搜索和探索。 总览 打开应用程序后,用户可以通过点击屏幕中间的Mr. Jitters图标来开始寻找咖啡因。 然后,我们向用户提供他们当前所在的地点以及步行范围内最好的咖啡店。 如果用户点击某行,他们会在地图上看到咖啡店,他们可以从Foursquare.com获取路线或更多信息。 *从左到右:主屏幕,搜索视图,地图和方向 在本演练中,您将学习如何: 注册Foursquare API密钥 确定设备在现实世界中的位置 查找该地区推荐的最佳场所 如果要在继续之前先查看实时应用程序,可以从App Store下载它。 本教程是用Swift 3编写的,适用于熟悉iOS开发的人员。 如果您以前从未构建过iOS应用程序,请查看一些出色的在线资源以开始使用。 获取代码 最好的开始方法是从GitHub获取代码并在XCode中打开。 该项目是在Swift 3中构建的,因此您需要XCode 8或更高版本。 应用程式结构 该应用程序由三个View Controller组成: HomeController.swift | 带咖啡搜索按钮的主屏幕 SearchController.swift | 搜索结果页面显示您当前所在的地点以及附近最好的咖啡 DetailsController.swift | 在地图视图中显示咖啡店,其中包含指向Foursquare场地页面的链接以及有关路线的链接 为简单起见,我们决定不将第三方库用于核心位置或HTTP网络。 这样,您应该能够将任何这些代码复制粘贴到自己的应用程序中,而无需安装其他依赖项。 但是,如果您的应用程序已经在使用Alamofire或SwiftLocation之类的库,则应该可以轻松地将此代码集成到这些软件包中。 设置Foursquare API 要注册免费的Foursquare API密钥,请导航至developer.foursquare.com并创建一个新应用。 创建新应用后,您将获得两个非常重要的信息,即客户端ID和客户端密钥。 您将需要同时使用这两者来开始对Foursquare进行API调用。 获得客户端ID和客户端密钥后,将其粘贴到SearchController.swift中的CLIENT_ID和CLIENT_SECRET变量中。 让client_id =“ […]

如何制作Pokemon Go for iOS —第1部分:地图和位置

在本系列文章中,我们将借助Swift 3为iOS编写一个简单的’Pokemon Go’克隆。如果您使用的是Swift的当前公共版本,则可能要考虑使用Xcode 8,它带来了Swift 2.3和Swift 3。 如果值得使用Swift 3,则可以在这里了解。 不要犹豫,使用旧版本的Swift来完成本教程,您当然可以! 如果您没有上述工具,则可以考虑从AppStore下载Xcode。 这样,您便可以开始使用Swift 2(撰写本文时)。 因此,首先让我们启动Xcode-beta(Xcode 8)并创建一个新项目。 我们要创建一个单一视图应用程序,因为我们要从一个普通的白色项目开始。 然后输入项目名称,在这种情况下将是pokemongo。 您可以随意命名,因为稍后将显示实​​际的名称。 我们要使用的语言显然是Swift ,而不是Objective-C。 对于设备,您可以选择自己喜欢的任何东西,仅iPhone或iPad,或两者都通用。 在单击下一步之前,请不要忘记选中“ 使用核心数据” ,我们需要它来将数据存储在手机上。 单击下一步后,将显示您的项目摘要。 将显示名称更改为“ Pokemon Go”,并将部署目标更改为您选择的版本,在我的情况下为10.0,因为Swift 3仅在iOS 10上运行。此外,请取消选中除Portrait之外的所有其他设备方向 。 我们几乎都准备出发。 最后一步是转到窗口左侧的文件浏览器中的 ViewController.swift ,并删除所有不必要的注释和函数,因为这将清理我们的代码(好的代码仅具有必要的功能!) 现在我们已经准备就绪,可以从实际项目开始。 转到Main.storyboard ,然后在右侧区域的最低框中选择第三个图标,然后搜索Map Kit View 。 将其拖放到您的项目中并调整其大小。 仍然在选择“地图视图”的情况下,单击画布底部灯条右侧的倒数第二个项目,可以在其中找到已拖动了地图视图的视图控制器。 确保未选择“约束到边距”并将其(如果尚未设置),所有约束都设置为0。最后,点击底部的“添加约束”,从现在开始,我们的画布将适应所有屏幕尺寸。 现在,我们想使用代码访问“地图视图”,因此需要创建一个出口。 因此,我们必须单击右上角带有两个相互干扰的圆圈的图标。 您应该会看到第二个窗口,其中包含我们的视图控制器的代码。 现在,在代码画布中的viewDidLoad-function和ViewController类之间 ,按住控件并从Map View中拖放。 要输入名称,请输入mapView (Swift主要使用驼峰式大小写,这意味着您从小字开始,每当一个单词被一个空格隔开时,您只需将“新”单词的首字母大写)。 完成所有这些之后,单击右上角的左对齐图标,然后选择ViewController.swift文件。 您应该在mapView出口旁边找到一个警告图标。 这是因为尚未导入框架 (功能等的集合)。 […]

在17分钟内构建一个Swift Photo App

当您了解基本知识后,在Swift中构建拍照应用程序将非常容易。 为了使用iOS设备的内置相机拍照,Apple提供了UIImagePickerController类。 从Apple开发人员库中: UIImagePickerController类管理可自定义的,系统提供的用户界面,以在支持的设备上拍摄照片和电影,以及选择在应用程序中使用的已保存图像和电影。 图像选择器控制器管理用户交互,并将这些交互的结果传递给委托对象。 在本教程中,我们将学习如何拍摄照片并将其显示在“图像视图”中。 步骤1 打开Xcode并创建一个新的Single View Application 。 确保输入Swift作为语言,并确保在设备中仅选择了iPhone。 第2步 转到情节提要,然后将“图像视图”从“对象库”拖到主视图。 转到“大小”检查器,然后输入以下值。 将一个按钮从“对象库”拖动到主视图,并将其放置在“图像视图”下方。 给按钮命名为“拍照”。 第三步 选择助手编辑器,并确保ViewController.swift已连接到ViewController。 Ctrl +拖动 从Image View到ViewController类,然后创建一个Outlet。 Ctrl +从Button 拖动到ViewController类,然后创建一个Action。 步骤4 转到ViewController.swift文件并创建以下属性: 然后,更改类声明行,以使ViewController符合UINavigationControllerDelegate和UIImagePickerControllerDelegate协议。 接下来,实现takePhoto IBAction方法。 图像选取器控制器使用Camera的源类型初始化,并且presentViewController方法以模态形式呈现视图控制器。 实现UIImagePickerController委托方法imagePickerController() 这用于关闭当前视图并将照片分配给“图像视图”。 第5步 生成并运行您的项目,并授予对iOS设备内置摄像头的访问权限。 选择“拍照”并拍照。 选择“使用照片”以在“图像视图”中显示您的照片。 超级简单! 我希望你能定时。 我认为17分钟很慷慨。

服务器端Swift:Vapor 3-Bölüm2:APIOluşturma第2/2部分

Merhaba👋🏻, 第1部分:API API应用程序API。 亲子ilişkilerineve流利的query’lerinegeçmedenönceuygulamaya 用户 ve 风格 ekleyelim。 用户ve类别控制器的用户类别控制器的声音。 蒸气xcode -y 用户sınıfını实现edelim。 Fluent’in用户手册。 Bu id’yi Song eklerken creatorID参数设置。 creatorID’miz ile Song’u ekledik。 响应身体içerisindeayrıntılıolarakgörüyoruz。 Bir Song daha ekleyelim。 即时用户(Sim’User’ıneklediğitümSong’ları)正在获取其他信息。 Buradakullanacağımızurlyapısı; http:// localhost:8080 / api / users / CREATOR_ID /歌曲 Son olarak Song’u ekleyen用户’ıgetiren fonksiyonumuzu测试edelim。 Kullanacağımız路线yapısı; http:// localhost:8080 / api / songs / 1 / creator 亲子ilişkilerindebahsetmem […]

带有MVC的iOS Tableview

如何使其清晰并享受您的代码 如果您构建iOS项目,您已经知道这个事实:最常用的组件之一是UITableView 。 如果您尚未构建任何项目,您仍然可以在许多流行的iOS应用中看到UITableView :YouTube,Facebook,Twitter,Medium,大多数Messenger应用等。基本上,每次需要显示动态数量的在同一视图上的数据对象,请使用UITableView 。 另一个基本组件是CollectionView,我个人更喜欢使用它,因为它更灵活。 稍后我将发表另一篇有关CollectionView的文章。 因此,您想将UITableView添加到您的项目。 一种明显的方法是使用具有内置UITableView的UITableViewController 。 它可以通过简单的设置工作,您只需要添加数据数组并创建一个单元格即可。 它看起来很简单,并且可以按照我们需要的方式工作,除了以下几点: UITableViewController代码变得超长。 并且它打破了MVC模式。 什么是MVC?为什么我们需要考虑一下? 您可以查看这篇文章,其中对所有iOS体系结构模式都有很好的解释。 您不想处理所有这些模式吗? 无论如何,您可能仍想拆分您的一千行长的UITableViewController。 在上一篇文章中,我描述了将数据从模型传递到控制器的三种方法。 在本文中,我将使用委派方法向您介绍处理tableViews的方法。 这种方法使代码看起来非常整洁,模块化且可重用。 我们将不使用一个UITableViewController ,而是将其拆分为多个类: DRHTableViewController :我们将其设为 UIViewController的子类,并添加UITableView作为子视图 DRHTableViewCell : UITableViewCell的子类 DRHTableViewDataModel :它将使用委托进行API调用,创建数据并将数据返回给DRHTableViewController DRHTableViewDataModelModelItem :一个简单的类,将保存所有数据,这些数据将显示在DRHTableViewCell中 。 让我们从UITableViewCell开始。 第1部分:TableViewCell 从一个名为“单视图应用程序”的新项目开始,并删除默认的ViewController.swift和Main.storyboard文件。 我们将逐步创建所有需要的文件。 首先,创建一个UITableViewCell子类。 如果要使用XIB ,请选中“也创建XIB文件”。 在此示例中,我们将复制中型主页的简化版本。 因此,我们将需要添加以下子视图: 头像图片 名称标签 日期标签 文章标题 文章预览 以所需的方式应用“自动布局”,因为单元格设计不会影响我们在本教程中所做的任何事情。 为每个子视图创建一个出口。 在您的DRHTableViewCell.swift中,您将具有类似以下内容: 类DRHTableViewCell:UITableViewCell { @IBOutlet弱var […]

蒸气2入门-Restful API Swift Server

正如之前在这里宣布的那样,Vapor框架刚刚推出了其2.0版本。 在Monk Software,我们一直在寻找新技术,我们为Vapor提供了机会! 什么是蒸气? Vapor是服务器端Swift Web框架。 无论您需要什么,Restful API Server,显示html页面,发送电子邮件或推送通知,Vapor几乎可以满足所有需求。 我们将在这篇博客文章中介绍什么? 今天,我想向您展示从Vapor API模板开始,添加一些端点然后将服务器部署到Heroku多么容易。 让我们开始吧 我假设您使用的是装有Swift和Xcode的Mac,如果没有,请安装Xcode(Swift捆绑在其中),如果您使用的是Ubuntu,请按照此指南进行操作。 1)安装蒸气工具箱 要充分利用Vapor,我们还需要它的工具箱,您可以通过在终端中输入以下内容进行安装: 冲泡安装蒸气 或者,如果您在Ubuntu上,请执行以下操作: sudo apt-get更新 sudo apt-get安装蒸气 2)创建一个新的应用程序 创建一个超级简单的应用程序,只需在终端中输入: 蒸气新的IncredibleVaporApp –template = api(或您想要的任何名称) 在少数情况下,Vapor应该下载所有依赖项,并使用给定的应用程序名称创建一个文件夹。 3)可选:生成Xcode项目文件 如果您想利用Xcode自动补全功能,可以在vapor app文件夹内的终端中键入以下内容: 蒸气Xcode 这将生成.xcodeproj,键入“ y”以在Xcode中打开。 4)运行服务器 好的,我们已经准备好运行我们的服务器,如果您使用Xcode,请选择方案App并按play,如果您在Ubuntu中,请输入终端: 蒸气生成和&蒸气运行 build将提取要部署的构建,然后运行将启动服务器。 默认情况下,Vapor将在以下地址启动服务器: 0.0.0.0:8080进行测试,请访问http://0.0.0.0:8080/hello, 您将看到此类型的json: {“你好,世界”} 一切都按预期进行! 5)添加自定义端点 现在是时候添加我们的自定义终结点了,假设我们要通过传入一个人的名字来问候他。 首先,在我们的项目中打开Routes.swift文件,然后在方法中 func build(_ builder:RouteBuilder)抛出 我们可以添加新的API: builder.get(“ greet”){要求 let name […]

适用于初学者的iOS开发。 第3部分:准备面试

在本教程的最后部分,我将指导您如何为初级开发人员职位做第一次面试。 正如我在本文中提到的那样,我参加了关于我的职业这两个角色的数百次采访。 大约10年前,我开始了iOS开发人员的职业生涯,可以肯定的是,今天的要求会更高,但是如果您准备得很好,就会成功。 当我只有中层职位时,很少几次我甚至雇用了经验最少的人。 它怎么发生的? 他们证明自己很聪明,可以完成任务。 检查本文以了解该做什么和期望什么。 必要的知识 参加面试之前,请确保您已准备好。 下面,我将为您提供通常讨论的最重要领域的简短清单。 Swift语言功能 正如我在本教程的第一部分中提到的那样,Swift是iOS App开发的第一选择。 而且您需要知道如何使用它。 这里列出了即使在纸上也应该能够写的最重要的东西: 创建变量,了解let / var差异 了解让选件如何工作(如果满足条件) 参考文献薄弱,一些基本的内存管理知识也将是不错的补充 使用数组和字典(创建,计数,插入,删除) 使用字符串(创建,计数符号,添加子字符串) 创建自己的结构,类和方法 If..else和switch..case条件 For周期 Xcode Xcode为您提供了一个非常用户友好的界面,因此,很容易学习如何使用它。 你应该能够: 创建一个新项目并附加CocoaPods 在iOS模拟器和设备上运行您的应用 调试您的应用(使用控制台输出了解问题所在) 将您的应用提交到App Store 界面生成器和UIKit Interface Builder是Xcode的一部分,您可以在项目窗口中打开XIB或Storyboard文件时看到它。 目的是使构建用户界面尽可能容易。 UIKit框架是iOS SDK的一部分。 它包含UI组件和控件。 使用Interface Builder,您可以使用UIKit组件而无需编写任何代码。 这就是为什么我这次将两者结合在一起的原因。 你应该能够: 在Storyboard中为您的应用( UINavigationController , UITabBarController , UISplitViewController )创建导航模型 了解新的ViewController的模式表示和UINavigationController推/弹出机制之间的区别 使用Storyboard Editor创建一个新的ViewController并将其与代码中的类连接 在ViewController之间创建序列 […]

第2天。选择正确的学习资源

在本系列的第一部分-第1天-要学习的编程语言-我们讨论了着重于*在*之前*构建有用的东西,甚至考虑学习任何编程语言。 如果您在一天结束之前完成了动作练习,则应该列出可以构建所需产品的技术列表,并按可及性进行排序。 您今天要处理的清单中的第一件事就是获取清单中的第一项,并找到可从中学习该技术的资源:书籍,文章,教程,在线课程。 我将为您提供以下示例资源列表。 为了让您想出自己的OWN清单,您需要重点关注。 记住您昨天学到的第一个原则- 学习与构建 。 当您查看资源时,请遵循以下一条简单的规则对其进行评估: 阅读完本书,观看本教程并完成本课程后,我是否会制作一些东西? 现在,它一定不是您昨天决定构建的产品/服务/应用程序。 它只需要是一个成品。 这本书,教程和课程-必须在结尾处特别提及-您将能够构建:应用程序,网站,服务等。 如何选择正确的学习资源? 您要寻找的东西: 构建现有产品的克隆:Instagram克隆,Facebook克隆,Twitter样服务 该资源必须有明确的时间表-完成它需要多长时间。 非常非常重要! 您必须预先了解-您将花费多少时间来构建它。 没有截止日期的目标-根本不是目标。 课程/书籍/教程的评分,评论和评论 很重要!!! 有没有办法直接与作者联系? 在Facebook上找到? 推特? 良好学习资源示例清单 您将构建的内容:人工模拟生活,编程语言,平台游戏,绘画程序和动态网站。 时间表:页数有限,您可以在开始阅读本书时确定自己的进度。 我花了15天才完成这本书。 评分: 4.5星,亚马逊,基于77条评论 联系人:作者活跃在GitHub,Twitter上,您甚至可以通过他的网站向他发送电子邮件。 您将构建的内容:社交网络(Facebook克隆),聊天应用程序(WhatsApp克隆),教程应用程序(youtube克隆)。 时间表: 71.5小时的视频。 因此,如果您努力学习,则可以在2周内成为拥有现有工作应用程序的真正的iOS开发人员。 评分: 4.5星级基于9,190评分 联系人:课程的创建者在Twitter上很活跃,但在Udemy本身上,更是积极地回答学生的问题。 我确定如果您在北斗的个人学习平台上挖北斗,就会发现更多与他联系的方式。 您将构建的内容:视频目录网站,该网站将抓取youtube视频并将其显示在页面上,并提供用户身份验证,管理,两种不同的前端构建方式-使用模板和使用javascript框架。 完成完整的堆栈开发。 时间表:页数有限,您可以在开始阅读本书时确定自己的进度。 我花了10天的时间才能完成该项目。 评分:这是来自 Sails.js的创建者本人-Mike McNeil! 相信我,这很棒。 联系人: Mike McNeil的GitHub,他的Twitter帐户和他的Blog是一个很好的起点。 完成今天的动作练习 选择一个将用于构建一个产品的资源。 设定明确的目标-将来-一星期,两周,三周-当产品准备就绪时。 计划您的时间-这样您就可以每天学习。 […]

如何校准显示器

如果您打算为该站点做出贡献,那么必须对显示器进行校准,这样您就可以区分颜色和级别上的细微差别。 这不仅有助于改善计算机上的图像和视频质量,还使您和正在审核图像的人员都能看到同一件事。 由于主持人可以在其校准的显示器上看到某些图像,因此在此站点上已拒绝了无数图像,但是提交图像的人无法修复它,因为他们看不到指出的问题。 大多数新显示器都在随附的光盘上或在显示器菜单中内置了某种校准程序。 如果您都没有,那么网上有无数的教程可以指导您完成校准过程,并且通常可以很快完成。 我不会通过编写自己的校准教程来重新发明轮子,因为它的完成工作远比我能完成的要好得多,但是我将提供此链接 , 该链接可提供5个非常好的工具来完成此工作。 如果该链接出现问题,快速的Google搜索“ 如何校准显示器 ”将提供比您要求更多的结果。 相反,我将分享我们过去使用的图像来测试您的显示器是否可以区分不同的黑色水平。 该图像实际上提示我们的一个用户更换了他的显示器。 即使经过多次校准,他仍然看不到图像中的问题。 有了新的显示器之后,他可以看到它,还有更多他以前从未知道过的东西。 一旦发现问题,修复此特定图像只需进行快速级别调整即可。 该图像不应用作校准显示器的替代品。 即使可以发现问题,也不能保证其他级别的设置正确。 如果您以前从未校准过显示器,则可能会惊讶于丢失的内容,还可以避免因看不见的图像被拒绝而感到沮丧。

成为Swift 3绝地大师

与Objective-C相比, Swift增加了语言功能,使开发人员的代码更安全 , 更快 , 更可靠 , 更可预测 。 1创建一个Swift文件来管理您的样式 设置外观属性的最简洁方法: 为您创建的每个标签或按钮设置颜色和字体 ,只需创建一个扩展某些类的Swift文件。 您可以在两分钟内更改应用程序的样式。 🎨 使用静态的计算变量。 Swift 3允许我们使用没有任何初始化程序的变量。 // Colors.swift 扩展UIColor { 静态var buttonColor:UIColor { 返回UIColor(红色:0.50,绿色:0.50,蓝色:0.50,alpha:1) } 静态var bodyColor:UIColor { 返回UIColor(红色:0.30,绿色:0.0,蓝色:0.30,alpha:1) } 静态var backgroundColor:UIColor { 返回UIColor(红色:0.00,绿色:0.7,蓝色:0.40,alpha:1) } } // FontStyles.swift 扩展UIFont { 静态var bodyFont:UIFont { 返回UIFont(名称:“ Helvetica”,大小:14) } 静态var titleFont:UIFont { 返回UIFont(名称:“ Helvetica-Bold”,大小:18) } } […]