Tag: Swift 4

斯威夫特游乐场1.6

全体的にSwift 4へ 概要 写すだけですが,今回のアップデートで 新しい”拡张现実”のチャレンジでは,ARKitを使って现実世界の中にByte(编注:マヨネーズみたいな生物の名前です)の仮想世界を出现させます ドからードからiPadのカメラにアクセスできるようになりました コード内のエラーの说明が一段とわかりやすくなりました ドでードでSwift 4とiOS 11 SKDを活用できます AppのAppと“コードを学ぼう1”のレッスンに,スペイン语(スペイン),イタリア语,オランダ语,繁体中国语,韩国语,スウェーデン语,タイ语,トルコ语,ポルトガル语(ブラジル)の新しい言语が追加されました となったそうです。 実张现実 iPadのOSをiOS11に上げないと使えません。iOS10ではこうなります。 iOS11にしても私のiPad mini 4thは対象外でした。残念。 スクリーンショットで气氛囲気だけ出しときます。 コード内のエラーの说明が一段とわかりやすくなりました 以前がどんなだったか覚えてない(&アップデートしたので古いのを确かめられない)ので违いが书けないのですが,良くなったそうです。以下はざっくりしたレポートです。 日本语 本家(?)のXcodeの方のメッセージは英语なので,この点はこっちの方が进化しています。 修正邦 上のような场合,修正邦タンを使うと一瞬で修正できます。 横スクロール 次のようなエラー表示内の横スクロールもあります。 スワイプで右を表示させるとこうなります。 表示する内容がどちらも是否要添加默认条款?なのでこの例だと利点がわかりにくいですがメッセージによってはうまいこと机能するような気がします。 关连する行の视覚エフェクト 面白いのが次のような复数のコードがからんだエラーのときです 修正邦タンの邻の矢印をタップすると,もう片方のエラーが膨らむアニメーションションが表示されます。これによって,そのエラーがどこの文と关连して発生しているのかわかります。 次のパターンでも同様の矢印が表示されます。 个人的に気になっていた部分はどうなったか? 数字の変数を代入するところで胜手に数字入力の小画面が出てきて画面下のキーboードが消える件 画面下のキーboードが胜手に现れたり消えたりするとわずらわしいので好きではないのですが,変わっていませんでした。表示しないための设定がどこかにあるんでしょうか? ついで 今回始めて気が付いたのですが,BGMはコード进行や曲の展开がはっきりしているものでした。

具有工具栏的macOS简单自定义窗口-第2部分

我希望工具栏中有一个小的图像,以指示“浅”或“暗”外观。 我将使用在第1部分中创建的项目。 步骤1.我使用Figma放下了两个图标,并对它们进行了着色,并使用@ 2x作为名称将它们保存为64×64大小。 步骤3.打开情节提要,然后将“工具栏”拖放到窗口中。 从工具栏中删除所有元素,然后添加ImageView。 步骤4.将ImageView连接到CustomWindow.swift。 如下更新代码。 如果我想以编程方式添加NSImage会怎样? 我最喜欢的开发工具之一是PaintCode。 使用此工具,我可以轻松地从.svg创建Swift(或Obj-C)代码。 第1步。让我们转到Storyboard,然后将ImageView添加到View Controller。 然后将其作为IBOutlet连接: @IBOutlet var imageView:NSImageView! 我们将再次需要两个图像用于“亮”和“暗”状态。 重复深色版本,然后保存。 最后,将其添加到Xcode中的项目中。 步骤3.到目前为止一切顺利,但是我们的应用程序将如何得知外观变化? 幸运的是,有一种简单的KVO方法。 如下更新我们的ViewController: 资料来源: Mohammad Asgharneya:涂成黑色:macOS Mojave中的黑暗模式 您可以在此处找到源代码。

正则表达式支持Swift iOS

正则表达式(regex)làdùngcácmẫu模式tìmkiếmchuỗiđểtìmkiếmhoặcthaythếcácchuỗi字符串NSRegularExpression Cáctoántửcơbản –Kiểuboolean或dùng:| vídụ:cat | dog =>khớpvớikếtquảcó“ cat”hoặc“ dog” –Kiểugroup(nhóm)dùng:() vídụ:2(0 | 1)8 => 208,218 –Kiểuđịnhlượng ? :khôngcóhoặc1lünxuấthiệntrướcphầntửđó,vídụ:abc?d => abcd,abd * :khôngcóhoặcnhiềulnnxuấthiệntrướcphầntửđó,vídụ:abc * d => abd,abcd,abccd,abcccd + :khôngcóhoặcnhiềulầnxuấthiệntrướcphầntửđó,vídụ:abc + d => abcd,abccd,abcccd {n} :sốlầnxuấthiện,vídụ:abc {3} d => abcccd {min,} :最小化:abc {2,} => abccd,abcccd,abccccd {min,max} :sốlốnxuấthiệntừmintớimax:abc {1,2,3} => abcd,abccd,abcccd ^ :Bắtđầucủakítự,Vídụ:^ A => An B $ […]

Swift 4简介系列1.7 — Swift运算符

Swift支持大多数标准运算符和其他编程语言使用。 此外,Swift可提高使用这些运算符时的安全性。 所有标准运算符均分为3种类型。 他们是: 一元运算符:一元运算符可用于单个操作数。 它可以放在操作数前面(前缀),也可以放在操作数后面(后缀)。 前缀一元运算符的示例是-variable1 , -10和!variable2 。 后缀一元运算符的示例为variable3! 二进制运算符:二进制运算符在2个操作数之间工作。 二进制运算符的示例是a + b,c / d和e * f 三元运算符:三元运算符使用3个操作数。 Swift中只有一个三元运算符; 它是三元条件运算符(a?b:c) 在语句1 + 2中,加号是运算符 ,数字是操作数 。 赋值运算符 最常见和最基本的运算符是赋值运算符。 基本语法如下: = 例: var sampleNumber1 = 0 sampleNumber1 = 256 让sampleNumber2 = 242 sampleNumber1 = sampleNumber2 打印(sampleNumber2) 对于元组,我们可以一次将多个值分配给多个变量/常量。 例: 令(a,b,c)=(12,2.78,“测试”) 一种 b C 赋值运算符不返回值 与其他编程语言不同, Swift赋值运算符不返回数字或布尔值 […]

Swift 4.0:自动引用计数(ARC)-第2部分

欢迎回到本教程的自动引用计数第二部分! 在第一部分中 ,您了解了ARC的一些基本概念,例如weak , Unowned 以及如何使用weak和unowned负责解决参考周期问题。 在最后一部分中,您将了解最后一种情况,在这两种情况下,两个properties都应具有值,并且初始化完成后,两个属性都不应该nil 。 此外,您还将学习如何克服Closures的强参考周期 。 让我们直接深入。 假设我们有一个Country和President类。 这些类中的每一个都将另一个类的实例存储为变量。 这意味着每个国家都应该有一个总统 ,每个总统都应该与一个国家联系在一起。 为了满足此要求而不会导致内存泄漏,您需要声明一个属性(在我们的示例中为Country类中的countryPresident )作为隐式展开的可选Property 。 这可以通过将感叹号放在其类型注释的末尾( President ! )来完成。 而另一方面,您需要将其声明为无主财产(在我们的country中为President阶级)。 国家 类别 { 让 countryName: 字符串 var countryPresident: 主席 ! 初始化 (countryName: String ,PresidentName: String ){ 自我 .countryName = countryName self .countryPresident = 总统 (presidentName:PresidentName,国家/地区: self ) 打印 (“国家正在初始化”) } deinit { […]

如何干净地隐藏UITableView节

采取任何应用程序。 前往设置。 您很有可能会找到带有分组节的UITableView。 大多数应用程序至少使用一个UITableView子类构建,并且经常需要根据用户设置或对功能的访问来显示/隐藏特定部分。 我们没有开箱即用的隐藏功能 UITableView是UIScrollView的子类,自iOS 2.0起就存在,它没有方便的isHidden属性,因此必须在数据源和委托中处理逻辑。 当逻辑跨越协议实现时,这很快就会变得像意大利面条。 最小化代码复杂度 试图处理每个特定情况并在显示节时将numberOfSections设置为n ,在隐藏节时将cellForRowAt indexPath设置为n-1 ,但是当我们必须处理cellForRowAt indexPath和后续设置中的单个单元逻辑时,这变得很复杂。 有40多个数据源和委托方法可以跟踪,并且代码维护从这里变得很棘手。 有更好的方法。 解决方案 让我们从numberOfRowsInSection开始,然后return 0以将Section隐藏 。 这是一个好的开始,但是由于页眉/页脚的填充,我们仍然会以一个空的部分结束,这会占用空间。 调整布局 要调整额外的间距,我们可以覆盖委托方法heightForHeaderInSection并为隐藏部分返回CGFloat.leastNonzeroMagnitude 。*请注意,此处返回0无效; 高度必须有一个值。 覆盖func tableView(_ tableView:UITableView,heightForHeaderInSection部分:Int)-> CGFloat { 返回shouldHideSection吗? CGFloat.leastNonzeroMagnitude:20 } 如果您已经覆盖titleForHeaderInSection ,则还需要将节标题设置为nil 。 重写func tableView(_ tableView:UITableView,titleForHeaderInSection部分:Int)->字符串? { 返回shouldHideSection吗? nil:“部分标题” } *您可能还需要覆盖storyboard中的heightForFooterInSection或将页脚值设置为<1。

在Swift框架中重用代码

复制和粘贴代码很糟糕,当发现错误并不得不使用它修复所有应用程序时,情况更是如此。 但是有办法避免吗? 就在这里! 苹果提供了一种称为框架的工具,以简化代码共享。 此外,它还为我们提供了一种将相关代码分组(模块化)和限制对代码访问(封装)的机制。 在本文中,我们将介绍什么是框架以及为什么使用它们。 我将逐步指导如何创建和构建框架,以及最终如何在应用程序中使用框架。 本文将专门用Swift编写框架中的代码。 什么是框架? 框架是一个结构化目录,可以包含共享代码和共享资源,例如图像,笔尖(XIB和情节提要的混合形式)和其他资产。 您可以将其视为传递代码和/或其他可重用资产以使代码正常工作的软件包。 为什么要使用框架? 我们已经介绍了使用框架的主要原因。 另一个很好的理由是简化与组织服务的集成。 例如,贝宝(Paypal)提供了框架来帮助应用程序处理信用卡交易。 Onfido提供了执行远程身份验证的框架。 框架可以节省客户与服务的集成工作。 为客户节省了时间和金钱。 客户使用您的服务的速度越快,您就越早开始赚钱💰。 此外,在选择提供商时,时间和精力可能是潜在客户的关键因素。 实际上,市值超过92亿美元的Stripe始于对支付处理器的整合挫折。 如何建立框架 在本节中,我们将引导您完成创建和构建框架的过程。 该框架将包含一个简单的登录屏幕。 在接下来的步骤中,我们将: 使用Cocoa Touch Framework模板创建项目 使用XIB添加视图控制器 将视图插入我们的视图控制器以允许用户登录 将XIB中的视图连接到LoginViewController类 以编程方式加载视图控制器 在框架之外访问视图控制器 如果您已经熟悉这些内容,请随意跳过任何部分或全部。 1.创建项目 首先,从菜单栏中选择File > New > Project… ,以Xcode创建一个框架。 通过选择iOS Cocoa Touch Framework项目模板继续,然后单击“ 下一步” 。 最终命名您的框架,您可以随意命名。 我要使用名称MyFramework 。 还要确保选择的语言是Swift 。 命名后,单击“ 下一步”,然后选择要存储项目的位置,最后单击“ 创建” […]

如何使用Codable在Swift 4中下载和解析Google Place JSON响应

作者的注释: 对我来说重要的是,本教程应尽可能易于遵循。 如果您有帮助实现此目标的建议,请直接与我联系。 对于新的iOS开发人员而言,网络可能是最令人困惑和困难的主题之一。 好消息! 在Swift 4中,下载和解析JSON比以往任何时候都容易,而且您可以使用清晰易懂的100%本机代码来做到这一点! 您可以通过以下方法从Google地方信息下载和解析JSON。 一旦您了解了这一点,我相信您将能够从任何地方的任何JSON下载和解析信息。 JSON基础: JSON响应由key:value对组成。 键将始终为字符串类型。 值的类型可以是:字符串,数字,布尔值,数组,对象或null。 数组用方括号([])表示。 对象用大括号({})表示。 看一下您的源中的样本JSON。 在本练习中,我们的来源是Google地方信息。 识别应用程序所需的JSON字段是关键,因此您可以使对象简洁明了。 对于本练习,我想展示如何解析来自各种不同JSON情况的数据,除了标准键值关系外,还包括数组和嵌套对象。 这是示例JSON中的一项: 2. 创建一系列符合Codable的结构。 这些结构将保存我们从JSON读取的值。 可编码结构的基本结构: 符合编码 包含一个或多个常量,这些常量将保存从JSON读取的值 包含符合String&Coding Key的枚举。 枚举将在JSON键和您的常量之间建立连接。 我建议将这些结构放在自己的Swift文件中。 为了我们的目的,我们将该文件称为ResponseModels.swift。 GooglePlacesResponse结构 //一种。 我们正在使结构符合Codable。 // b。 我们将把结果保存在Place类型的对象数组中。 //C。 我们使用枚举来确保Codable知道从JSON读取的适当密钥。 在这种情况下,我们的results数组对应于JSON中的键“结果” (图1,一级) 。 放置结构 //一种。 完成Place结构后,我们将创建Location结构。 // b。 在我们的JSON中,有些地方有开放时间,有些没有。 因此,我们将此对象标记为可选。 如果您指示Codable搜索不存在的密钥,并且您的常量未标记为可选,则您将无法成功解码JSON并且不会收到任何结果。 //C。 在这里,我们将遍历JSON中的数组,并返回一个或多个自定义结构的值。 // d。 在这种情况下,我们的常量名与JSON中的键名不匹配。 […]

Swift 4:扩展检查角半径,边框颜色和阴影

强烈建议将其添加到您的项目中。 1.只需创建一个Swift文件并粘贴代码即可。 PS有时您所做的更改有时不会显示在情节提要上。 但是,它仍然方便且简单! 了解有关IBDesignable和IBInspectable的更多信息: Swift 3中的@IBDesignable和@IBInspectable。 IBDesignable和IBInspectable,这是一种创建自定义元素和属性的方法。 这可以直接添加到… medium.com

了解自动版式项目关系

自从Xcode 6中引入自动布局以来,它已经成为iOS UI设计海洋中每位开发人员的波塞冬三叉戟。 每个移动应用程序都通过“自动布局”和“自适应布局”进行设计。 我们都对自动版式了解很多。 那么,这个博客有什么新内容? 你很无聊 !! 等等,伙计们! 直到最近,我还是大力使用Interface Builder进行UI设计的开发人员之一。 因此,以编程方式创建和使用约束对我来说几乎是最少的。 当我开始以编程方式编写约束时,我经常迷惑于first item和second item之间的关系,即从一个UI组件到另一个UI组件的约束关系。 因此想到了记下我的观察结果。 让我们考虑以下设计: 为了在IB中进行设置,我们将要求View.Leading — Super View.Leading, View.Trailing — Super View.Trailing, View.Top — Super View.Top, View.Bottom — Super View.Bottom的最小约束。 让我们看看我们添加的约束。 我们不希望我们的约束无法通过“安全区域”布局,因此我们将它们与“安全区域”相关联放置,因此不要感到困惑。 即使我们从“视图”到“安全区域”设置了限制条件,也请仔细标记,理想情况下,第一项应该是“ View 但在某些限制条件下,我们发现第一个项目是“ Safe Area 。 为什么Xcode会这样做? 🤦‍ 好的,让我们将View设置为每种情况下属性检查器中的第一项,并查看更改。 只需反转第一个和第二个项目的trailing和trailing 。 在两种情况下标记常量的值都变为负数。 让我们离开IB并以编程方式放置约束,方法是从Purple View所有约束,然后查看其行为。 什么地方出了错? 要了解上述行为,我们需要了解以下概念并进行相应的研究。 iOS坐标系 参考上面的图表,随着我们向右移动,任何UI组件的x value都会增加,反之亦然。 当我们向下移动时,任何UI组件的y […]