Tag: Swift 4

使用Swift以编程方式布局视图的另一种方法

开始学习Swift时,我对自动布局系统感到困惑。 无论是使用情节提要还是程序限制,它都不适合我。 一些约束在运行时会干扰其他约束,而对所有不同的冲突约束进行分类变得令人沮丧。 我承认在Xcode中使用自动布局功能非常强大,但我相信,除了自动解决方案的替代方法会增加计算成本之外,还会增加其他复杂性。 请注意,在我的标题中,我并不是说这是一种布局视图的“更好”方法,只是一种可以促进进一步实验的不同方法 我觉得有一种更简洁,更省钱的布局视图方式,因此我开始着手开发一个名为View Layout的小型项目。 它只是UIView的扩展,您在其中实例化一个结构(ViewLayout),该结构为您计算视图的位置。 您可能会做的所有数学运算都可以使用CGRect和框架布局视图? 所有这些都封装在“视图布局”结构中。 它使用ViewPosition枚举来确定视图相对于“引导视图”的位置。 我不会尝试描述它,而是显示代码。 这是ViewLayout的初始化,包括分解和解释的步骤。 //您要放置的视图的不同位置选择 枚举ViewPosition { 案例底部中心 案例底部左 案例底部右 案例中心 案例顶部左 案例顶部右 案例中心 剩下的情况 案例权 } //通常除非要以根视图为指导进行布局,否则通常要使用withFrame init init(withFrame ofView:UIView,position:ViewPosition,size:CGSize,padding:(CGFloat,CGFloat)){ self.guide = ofView.frame // 1 self.position =位置// 2 self.size =大小// 3 self.padding =填充// 4 } 1:我设置ViewLayout对象在计算其原点时使用的框架 2:我将框架的位置与指南进行了比较 3:我设置要在ViewLayout中创建的框架的大小 4:我使用元组设置视图的水平和垂直填充。 第一项(padding.0)控制垂直填充,正数增加原点的Y坐标,负数减少原点的Y。第二个数与水平填充相同,正数增加X坐标,负数减少了它。 现在,调用此初始化程序后,您将获得一个ViewLayout对象! 不过您还不能使用它。 您只是获得一个自动配置的框架以供视图使用而已,而仅仅是一个函数调用! 您所要做的就是调用以下功能之一: //不要忘记在实例化结束时调用它! […]

教程:使用RapidAPI和Swift。

只需一个小时即可创建一个基本的天气应用。 本文是“ 带Swift的天气聊天机器人应用程序 ” 这三篇文章系列的第一篇。 最终建议将结合两个强大的Web服务(如RapidAPI和Dialogflow)在iOS上创建您的第一个聊天机器人。 去年五月,Mashape将他们的API Marketplace与RapidApi合并,现在是开发人员最大的API逍遥游集合。 那时RapidAPI尚没有合适的SDK来进行快速处理。 在本文中,我们将看到如何结合 Alamofire和Promise来获取数据并在对象中序列化。 如您所见,这是一个非常简单的应用程序,但是建议是学习轻松使用API​​ Marketplace。 我们正在使用什么: 斯威夫特4 天气预报API:RapidAPI 第三方库:Cocoa Pods(HTTP请求和Promise)。 让我们说明一下,在创建天气应用之前,我们需要做一些快速的事情: 1.1在Xcode上创建一个新项目。 打开Xcode,然后单击文件>新建>项目。 选择单视图应用程序作为模板,然后单击下一步,然后根据需要命名项目(在我的情况下为WeatherBasicApp)。 1.2安装CocoaPods。 现在,我们需要设置CocoaPods来管理Xcode项目的库依赖关系。 如果您以前从未使用过它: https://guides.cocoapods.org/using/getting-started.html 现在您的环境应该已经准备好了,我们需要在根文件夹中添加Podfile。 现在,我们必须将天气端点连接到我们的应用程序。 返回首页并搜索“ 天气 ”,然后单击第一个。 现在,在最后一个天气数据的端点列表中,单击“连接到端点”。 此时,我们必须选择正确的项目“ weatherbasicapp”,并为标题请求和url端点记录X-Mashape-Key和X-Mashape-Host。 那很简单。 🐵 好的,伙计们,我们已经配置了Xcode项目,可以使用RapidAPI端点了,现在该编写一些代码了! 😎 我们必须创建一个用GPS坐标和拖曳方法初始化的对象请求,以获取标头和主体参数。 在上一步中,我们注意到了X-Mashape-Key和X-Mashape-Host 。 我们正在使用这些参数来创建标题。 另外,我们需要创建一个身体参数: latitude和经度 。 感谢Murathan Biliktu的iPhone X样机 UI和情节提要非常简单,但是如果需要,您可以在我的GitHub上找到源代码以及其余代码。 在Github上查看示例源代码。 教程:使用AI和Swift 4。 在iOS上建立自然而丰富的对话体验。 如果您喜欢这篇文章,请推荐并分享。

在Swift 4中循环

几周前,我开始学习Swift,并从JavaScript中学到了一些东西,对此我总是感到困惑。 我不知不觉间断地将一些模式从JS转移到Swift,JS中的for循环就是其中之一。 如果您了解JS,则可以将其视为编写循环的方式 for(让i = 0; i <= 5; i ++){ … } 好吧,这不是用Swift编写循环的方式。 抱歉 通过学习,我已经能够设计出3种在Swift中用于循环的方法。 1.遍历数组 如果要遍历数组,这就是使用Swift可以完成此操作的方式。 让名字= [“安娜”,“山姆”,“史密斯”] 以名称命名{ … } 上面的代码片段遍历了names数组,并将数组中的每个项目分配给变量name并允许您在块中使用它。 2.循环字典 字典是键值对的无序集合。 [“spider”: 8, “ant”: 6, “cat”: 4]是一本字典,其键为spider,ant,cat和值8、6和4 遍历字典就像这样简单: 让numberOfLegs = [“ spider”:8,“ ant”:6,“ cat”:4] 在numberOfLegs中用于(animalName,legCount){ // animalName:蜘蛛 // legCount:8 // …. } 想象一下需要将数组中的所有值加起来的情况,这是一种简单的方法。 3.用数字范围循环 有时,您需要一个普通的for循环,例如JS片段。 在Swift中,使用数字范围很容易实现。 用于1 … 5中的索引{ … […]

SWIFTip#1:本周的随意见解

快速学习。 这是每周的见解,可增强Swift良好实践的技能。 如果您对快速学习者有更好的建议,请发表评论。 谢谢。 #常量 Swift中的命名空间— Cocoacasts 为了避免与其他库和框架发生命名冲突,Objective-C类需要具有唯一的名称。 那… cocoacasts.com 在Swift中使用全局常量的乐趣 摆脱该常数struct medium.com #CodeDiscipline&清洁度 领域/ SwiftLint SwiftLint —一种用于实施Swift样式和约定的工具。 github.com #JSON到SwiftModelsGenerator JSON到Swift,TypeScript,Go,C#,Java等::: quicktype 给定示例JSON,quicktype输出类型和序列化器,以便在Swift,Go中快速读取和写入该数据… quicktype.io json4swift.com | 在线JSON到Swift模型生成器 在这个技术时代,我们的动机很简单; 便利和自动化,不应该将JSON与Swift结合使用…… www.json4swift.com CuteBaby:Mac App Store上的Swift JSON模型 阅读评论,比较客户评价,查看屏幕截图,并了解有关CuteBaby:Swift的JSON模型的更多信息。 下载… itunes.apple.com #VectorImageXcode Xcode 9中的矢量图像 在Xcode 6及更高版本中,我们能够将PDF矢量图像添加到Xcode资产目录中。 这是管理您的… jgonfer.com 的好方法 #OptimizingSwiftBuildTimes fastred / Optimize-Swift-Build-Times Optimizing-Swift-Build-Times –关于优化Swift项目的编译时间的建议集。 github.com

在Ubuntu上部署Perfect和Swift 4

首次引入Swift时,我们并不了解该语言的真正潜力。 它主要用于使用Xcode开发iOS和mac应用程序。 但是,当Apple开源该语言时,它为许多未曾见过的实验打开了大门。 人们开始使用Swift编写框架并扩展其功能。 特别是在服务器端,已经建立了许多框架,例如Perfect,Vapor,Kitura等,并且正在广泛推广Server Side Swift。 Swift作为服务器端编程语言的优点之一是,它使开发人员可以在客户端和服务器中使用相同的Swift代码。 您还可以使用Perfect框架使用Swift编程语言编写RESTful API,服务和构建应用程序。 本文将帮助您在Ubuntu中部署Perfect和Swift。 为了安装Perfect Framework,您需要先安装Swift。 因此,让我们开始安装Swift。 如果您已经安装了Swift,则可以跳到说明Perfect Framework安装过程的部分。 注意—由于Apple到目前为止仅正式支持Ubuntu,因此很难在其他Linux发行版上部署swift。 打开终端。 在安装Swift之前,我们需要安装依赖项,以便Swift可以运行。 输入此代码。 sudo apt-get install clang libicu-dev binutils 如果以上命令无法正常运行,请改用以下命令。 sudo aptitude安装clang libicu-dev binutils 3.现在,让我们使用SwiftEnv安装Swift。 SwiftEnv是管理多个swift版本的好工具。 在本教程中,我们将在Ubuntu 16.04中安装Swift版本4.0.3。 3.1 —创建一个swiftenv文件夹。 mkdir .swiftenv 3.2 —现在,让我们克隆仓库。 git clone https://github.com/kylef/swiftenv ~/.swiftenv 3.3 —按照以下说明将swiftenv添加到bash配置文件。 echo ‘export SWIFTENV_ROOT=”$HOME/.swiftenv”‘ >> ~/.bashrc echo ‘export PATH=”$SWIFTENV_ROOT/bin:$PATH”‘ […]

提醒Swift 4

一键式 class ViewController: UIViewController { @IBAction func showAlertButtonTapped(_ sender: UIButton) { // create the alert let alert = UIAlertController(title: “My Title”, message: “This is my message.”, preferredStyle: UIAlertControllerStyle.alert) // add an action (button) alert.addAction(UIAlertAction(title: “OK”, style: UIAlertActionStyle.default, handler: nil)) // show the alert self.present(alert, animated: true, completion: nil) } } 两个按钮 class ViewController: UIViewController { […]

Swift 4.2 MVC简化了…

MVC,模型视图控制器是iOS开发中的一种现代方法。 如果您耐心并逐步学习,则易于理解和掌握。 我认为当您不熟悉iOS开发时,非常重要的一点是要了解这一点,原因是一旦开始开发,您就会习惯它。 即使您做错了! 别担心,我会尽力将所有事情解释得尽可能简单,这样您就不会犯常见的错误。 从一开始就学习并逐步掌握它是非常好的。 那么什么是MVC? 为什么这么重要? MVC是苹果推荐的要在iOS平台上开发的体系结构。 它代表您已经知道的Model View Controller。 现在让我们进一步潜水🙂 MVC由三个组件组成- – 模型:这就是您的数据所在的地方。 所有与数据相关的代码,甚至是网络代码,都位于此处。 – 视图 :这是您应用程序的正面。 – 控制器 :它使用几种方式(例如,委托模式,观察者模式等)在视图和模型之间进行中介。在本文中,我们将使用委托模式。 好,让我们去看看。 我将制作一个简单的应用程序,其中显示了Employee的个人资料: 让我们创建一个单视图应用程序,我将其命名为SampleMVC。 在这里,我在主StoryBoard中向View添加了一个UITableView ,并且UIViewController嵌入在UINavigationController中。 让我们添加UITableView的IBOutlet并实现UITableViewDataSource方法。 现在,我们将为数据实现一个结构类。 我们将使用虚拟api获取员工列表。 我们从api获取员工对象数组。 这是单个雇员对象的样子: { “id”: “1”, “employee_name”: “Tiger Nixon1”, “employee_salary”: “3208001”, “employee_age”: “611”, “profile_image”: “images\/default_profile.png” } 让我们在名为Models的项目文件夹中创建一个Group并创建 EmployeeDataModelItem中的swift文件。 同样适用于视图和控制器。 它将使您的项目安排得井井有条🙂 我们将使本教程尽可能简单。 这就是为什么我将创建一个像这样的简单类的原因: 我在EmployeeDataModel中添加了requestData和setData方法。 希望您通过本示例了解MVC的概念。 如果您有任何疑问,请在评论中提问🙂

将图像下载并上传到Firebase / With Swift 4

大家好,这是我的第一个故事,我将分享每个人都需要的东西。您可以学习如何使用Swift 4将图像或其他文件保存到Firebase存储中。 首先,您必须在ios应用程序的Firebase中创建一个项目。之后,您将在podfile中添加“ pod Firebase / Storage”,然后进行pod安装。现在,在视图控制器中导入“ Firebase / Storage”库。您可以编写这些代码将图片文件上传到Firebase。 让存储= Storage.storage() var data = Data() 数据= UIImagePNGRepresentation(“锁定”)! //图片文件名 //根据我们的存储服务创建存储参考 让storageRef = storage.reference() var imageRef = storageRef.child(“ images / lock.png”) _ = imageRef.putData(data,元数据:无,完成:{(metadata,error)in 保护元数据=其他元数据{ 打印(错误) 返回 } 让downloadURL = metadata.downloadURL() 打印(downloadURL) })

如何使用NSAttributedString转换HTML

本教程将向您展示如何使用NSAttributedString转换HTML。 通过使用NSAttributedString转换HTML,我的意思是转换HTML标记并从中创建属性字符串。 然后将其加载到UILabel或UITextView之类的文本组件中。 有时,您可能会从API得到响应,在该响应中,您将拥有一个字符串以及其中的所有HTML标记,并且需要以属性字符串的形式将其呈现给UI。 HTML示例 This is heading 1 This is heading 2 This is heading 3 This is heading 4 This is heading 5 This is heading 6 创建扩展 我经常使用扩展,并会建议您同样的扩展 ,因为它们是组织Swift代码和使函数可重用的关键。 现在,我们将创建字符串扩展名,在其中保留我们的convertHtml()函数,该函数将为我们完成所有工作。 此函数会将所有HTML标记转换为NSAttributedString 。 让我们将扩展名命名为String + Extensions.swift。 extension String{ func convertHtml() -> NSAttributedString{ guard let data = data(using: .utf8) else { return NSAttributedString() } […]

如何使用Swift 4.0以编程方式实现UITableView

在本教程中,我将向您展示如何仅使用代码,不使用Storyboard,不使用xib,仅使用代码来创建简单的UITable视图。 让我们潜入…… 打开Xcode并创建一个新的Single View App项目,为其命名为TableView ,单击下一步,将其保存在某个位置,然后单击创建 。 在Xcode导航器中删除ViewController.swift。 在导航器中单击项目名称,转到“常规”选项卡,在“部署信息”下,删除“主要” Storybaord,它应保持空白。 创建一个新的Swift文件并将其命名为TableViewExample 将以下代码添加到刚创建的TableViewExample.swift文件中。 导入UIKitclass TableView:UITableViewController { 让cellId =“ cellId” 覆盖func viewDidLoad(){ super.viewDidLoad() setupTableView()} func setupTableView(){ //注册一个用于创建新表单元格的类。 tableView.register(UITableViewCell.self,forCellReuseIdentifier:cellId) } } 在didFinishLaunchingWithOptions方法中打开AppDelegate.swift 添加以下代码。 窗口= UIWindow() 窗口?.makeKeyAndVisible() window?.rootViewController = TableViewExample() 现在让我们添加那些UITableView委托方法。 打开TableViewExample.swift,然后在文件末尾添加以下扩展名。 扩展TableView { 覆盖func numberOfSections(在tableView中:UITableView)-> Int { 返回1 } 覆盖func tableView(_ tableView:UITableView,numberOfRowsInSection部分:Int)-> Int { 返回5 } 覆盖func tableView(_ […]