首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS开发中使用系统没有的字体-swift

https://blog.csdn.net/u010105969/article/details/80068714 背景: 在学习swift一个demo见到了设置字体方法(系统没有的字体...方法: 需要将我们要使用字体且系统没有的导入到我们项目中,字体文件是以.ttf为后缀。 ? 字体文件 将字体导入到工程后,在info.plist文件添加我们导入字体 ?...info.plist 在“Build Phases”“Copy Bundle Resources”添加我们导入字体 ?...build phases 在做了以上工作之后,我们可以通过打印所有的字体,看我们刚才添加字体是否可用。...demo地址:https://gitee.com/liangsenliangsen/swift_uses_custom_fonts.git 本篇文章到这里就结束了,愿大家加班不多工资多,男同胞都有女朋友

1.1K30

Swift专题】聊聊Swift属性

Swift专题】聊聊Swift属性 引言 属性是面向对象语言中非常基础语法特性,我们讲属性,实际上就是讲与类本身或类实例关联数据。...在Swift,计算属性可以在_类、结构体和枚举定义,而存储属性只允许在**类**和结构体_定义。 存储属性 存储属性定义在类或结构体,可以将存储属性定义为常量也可以定义为变量。...另外,Lazy只能修饰定义为变量属性,不能修饰常量属性,这是因为懒加载本身逻辑是与Swift常量属性性质相悖Swift常量属性必须在实例构造好前完成初始化,而懒加载属性是允许实例构造完成后属性并未初始化...需要注意是当前类定义计算属性并不能定义属性监听器,这很好理解,因为即使支持在这种场景定义属性监听器也没有任何意义,因为set块在调用时我们已经可以处理任何需要监听器处理逻辑。...还有一点需要注意,一般情况下,我们无需访问属性包装器真实存储数据存储属性,但Swift语言也提供了一种方式来访问此属性值,仍然是通过语法规范约定方式,只需要将属性包装器存储属性属性名定义为projectedValue

13810
您找到你想要的搜索结果了吗?
是的
没有找到

Swift asyncawait

async-await 是在 WWDC 2021 期间 Swift 5.5 结构化并发变化一部分。Swift并发性意味着允许多段代码同时运行。...async 如何取代完成回调闭包 async 方法取代了经常看到完成回调。完成回调在Swift很常见,用于从异步任务返回,通常与一个结果类型参数相结合。...执行数据请求 } 在如今Swift版本,使用完成闭包来定义方法仍然是可行,但它有一些缺点,async 却刚好可以解决。 你必须确保自己在每个可能退出方法调用完成闭包。...执行数据请求 } } 可用属性对于了解你需要在哪里更新你代码以适应新并发变量是非常有用。虽然,Xcode提供默认实现并没有任何警告,因为它没有被标记为废弃。...继续你Swift并发之旅 并发变化不仅仅是 async-await,还包括许多新功能,你可以从你代码受益。

3.4K30

Swift 项目中涉及到 JSONDecoder,网络请求,泛型协议式编程一些记录和想法

对于来自网络 JSON 结构化数据处理,可以使用 JSONDecoder 这个苹果自己提供字符串转模型类,这个类是在 Swift 4 Fundation 模块里提供,可以在Swift 源码目录...其实面试过程通常都会有些算法题环节,很多人都以为只要有了解决思路或者写出简单处理代码就可以了,我碰到了一些面试人甚至用中文一条条写出思路以为就完事了。.../IndexSet.swift at master · apple/swift · GitHub 找到这个方法时发现没有 inout 定义同名函数也还在那里 public func index(before...,比如 initWith 什么实例出来对象是不同,不过他们都遵循了相同协议,所以我们在使用时候没有感觉到差别。.../Core/HTNFundation/HTNMultilingualism.swift 回头看看 JSONDecoder 也是使用协议泛型式编程一个典范。

6.6K20

Swift Task

Swift Task 是 WWDC 2021 引入并发框架一部分。任务允许我们从非并发方法创建并发环境,使用 async/await 调用方法。...然而,任务通过消除冗长调度队列代码,使我们生活变得相当不同且更轻松。 您可以在我文章 Swift async/await了解有关 async/await 更多信息。...不支持并发函数“async”调用是 Swift 常见错误。...处理取消 在想到处理任务取消时,您可能会惊讶地看到您任务正在执行,即使您没有保留对它引用。 Combine 发布者订阅要求我们保持强引用以确保发出值。...继续您 Swift 并发之旅 并发更改不仅仅是async-await,还包括许多您可以在代码受益新功能。

3.1K20

Android调试Log.d()没有输出

,但是在真机和模拟器输出却不一样。...首先使用是真机图片它输出日志只有错误日志,调试日志不见了。图片然后我们使用模拟器进行调试图片它把所有的日志都输出了图片我们在调试应用时但要是每个日志都要输出,否则是很抓狂。...通过网上查得知是部分厂家把比较低级日志禁止输出了,所以就没有看到刚才调试日志。...,因为Log是分等级,还有过滤器,这极大方便我们对输出日志捕获,尽量不要用System.out.println()和System.err.println()修改输出日志级别如果想修改输出日志级别...,可以在进行以下操作(酷派手机):1、拨号键输入:*20121220#,输入完成会自动打开工程模式2、选择日志输出等级3、选择Java log level4、在这里就可以选择你要输出最低等级日志了

2.4K30

Swift命名空间

命名空间namespace在C++、C#里面是一个常见概念,Swift也引入了这样一个机制,下面来探索一下这个命名空间来龙去脉。...一、为什么需要命名空间 简而言之一句话:为了避免命名冲突 在开发,尤其是在多模块开发,很难保证模块之间类名不会重复,为了保证不同模块下同名类可以正常使用而不报错,引入命名空间来保证即使创建类名一样...可以看出,Swift类名完整形式其实是“命名空间+类名”。...下面对比一下Objective-C与Swift两种语言实现方式。 由于Objective-C没有命名空间,所以写起来很轻松。...命名空间存在,如果按照上述做法得不到想要结果,这时候就需要想办法进行处理 //viewDidLoad添加一个个控制器 override func viewDidLoad() { super.viewDidLoad

2.2K30

Swift 热重载

包括: 重新启动它(或将其部署到设备) 导航到您在应用程序先前位置 重新生成您需要数据。 如果您只需要做一次的话,听起来还不错。...但是如果您和我一样,在特别的一天,对代码库进行 200 - 500 次迭代,该怎么办呢?它增加了。 有一种更好方法,被其他平台所接受,并且可以在 Swift/iOS 生态系统实现。...它是一个完全免费开源工具,您可以在菜单栏运行,它是由多产工程师 John Holdsworth 创建。你应该看看他Swift Secrets[2]。...注入现在允许你更改 PaneAView 任何东西,除了它初始化API。这些变化将立即反映在你应用程序。 ---- 一个更具体例子?...如果您切换到我们 TCA 分支(我们保持最新),你可以在 UI 和 TCA 层上使用 Inject 。 它有多可靠? 没有什么是完美的,但我已经使用它十多年了。

1.9K20

聊聊Swift

Swift秉承安全、易理解、易使用设计初衷,并没有引入宏概念。...但这也有一些缺陷,相比与C语言宏,Swift定义非常抽象,实现复杂,不太利于开发者进行理解。...本篇文章即基于这一前提,希望可以系统简介Swift宏进行介绍,帮助更多开发者了解它,使用它。...与普通Swift功能代码不同,每个宏都是一个单独Swift包,在工程我们可以创建一个新Package,选择Swift Macro,如下图所示: 宏实现依赖于swift-syntax包,Xcode...自动生成模板宏是使用了swift-syntax包Swift源代码静态分析能力,略为复杂,增加了理解宏本身难度。这里我们可以不理会这部分,专注于宏本身逻辑。

32310

Swiftif let guard

问题描述 之前是搞java,平常判断都是用if和else进行判断,这样稍微复杂逻辑就要嵌套好多层 swift 1.x版本可以用if let稍微解决这个问题,swift2.x 则有了更好解决方法(...guard),下面就用例子分别说明 例子 假设我们要根据本地推送通知type属性进行不同处理, 三种不同实现方式 只用if-else func application(application:...String) == "考勤"){ }else{ } } 总结 综上 我们可以发现 第二种方法相对于第一种方法嵌套关系虽没有改变,但是精简了判断是否为空过程...第三种方法相对于第二种方法就没了复杂嵌套关系, guard可以理解为if意思,但if定义变量只能在{}中使用,guard定义变量则可以在同级使用

1.7K30

Swift 幻象类型

,而我们可能犯任何错误只能在运行时被发现——编译器根本没有足够信息可以在编译时进行这种检查。...如果我们再深入一点,就会发现 Swift 标准库将我们上面提到UTF8类型定义为另一个类似命名空间枚举一个无大小写枚举,称为Unicode。...我们在这里看到是一种被称为幻象类型技术——当类型被用作标记,而不是被实例化来表示值或对象时。事实上,由于上述枚举都没有任何公开情况,它们甚至不能被实例化!...一个标准模式 起初,幻象类型在 Swift 可能看起来有点 "格格不入"。...然而,虽然 Swift没有像更多纯函数式语言(如Haskell)那样为幻象类型提供一流支持,但在标准库和苹果平台SDK许多不同地方都可以找到这种模式。

1.5K30

Codable发布这么久我就不学,摸鱼爽歪歪,哎~就是玩儿

终于, Apple 在 Swift4.0 Foundtion 模块添加了对 JSON 解析原生支持,它功能强大而且易于使用,接下来就让我带大家 了解下在 swift 里如何来对你数据进行 encoding...在 Swift4.0 ,Apple 提供了 JSONEncoder 和 JSONDecoder 俩对象来处理 JSON 编码和解码,核心代码如下: let encoder = JSONEncoder...JSONDecoder().decode(SongModel.self, from: jsonData) { dump(sSong) } } 输出结果如下: ▿ JSONDecoderDemo.SongModel...TASK 3:结构不一致 上面所演示 JSON 数据格式都是与数据模型里成员变量一一对应,但是,在实际开发,你会经常遇到数据源格式和数据模型结构 不一致情况,很多情况下可能是服务端与客户端没有统一好接口格式...String 转换成数据模型数组类型了。

1.8K30

Swift专题讲解十六——ARC在Swift应用

Swift专题讲解十六——ARC在Swift应用 一、引言         ARC(自动引用计数)是Objective-C和Swift中用于解决内存管理问题方案。...Swift也采用同样方式进行内存管理。         注意:在Swift只有引用类型有自动引用计数,结构体、枚举这类值类型是没有引用计数。...cls = obj1 obj1=nil obj2=nil //没有打印析构函数调用信息 对于上面的情况,可以将属性声明称weak类型来防止这种循环引用,weak作用在于只是弱引用实例,原实例引用计数并不会加...cls 若引用实例被释放后,其在另一个实例引用也将被置为nil,所以weak只能用于optional类型属性,然而在开发还有一种情况,某个类必须保有另一个类示例,这个实例不能为nil,但是这个属性又不能影响其原始实例释放...cls = obj5 obj5=nil obj6=nil //没有打印任何信息 上面的示例也会造成循环引用,然而MyClassFive类cls属性为常量不可为nil,不可使用weak弱引用来做Swift

1.3K20

Swift 状态建模

在构建应用程序和设计系统时,最困难事情之一是决定如何建模和处理状态。当我们应用程序一部分最终没有符合我们预期时,管理状态代码是一个非常常见 bug 来源。...我不会在这篇文章讨论具体框架或更大、整个应用程序架构变化(如RxSwift、ReSwift或使用ELM启发架构)—— 相反,我想把重点放在我发现非常有用小型技巧、窍门和模式。...我们已经去掉了所有的选项,所有特定状态值现在都被纳入了它们将被使用状态。...要做到这一点,我们只需在Video上创建一个扩展,使用Swiftguard case let模式匹配语法来提取任何正在进行下载任务。...谢谢你阅读! 译自 John Sundell Modelling state in Swift

1.4K10
领券