- 博客(204)
- 收藏
- 关注
原创 [SwiftUI 开发] @FocusState 管理焦点
是一个新的属性包装器,用于管理焦点状态。通过它,开发者可以轻松地控制哪个视图具有焦点,以及如何响应焦点变化。这对于表单输入、文本字段以及需要用户交互的场景非常重要。
2024-09-23 11:04:29 172
原创 [SwiftUI 开发] 构建带有动画的图片瀑布流效果
用户可以看到一个由多张图片组成的瀑布流布局,图片按列排列。当用户点击其中一张图片时,图片会在全屏模式下显示,并带有平滑的动画过渡。用户可以再次点击全屏图片,返回瀑布流视图。
2024-09-06 14:07:12 915 1
原创 [SwiftUI 开发] 嵌套的ObservedObject中的更改不会更新UI
SwiftUI(更准确地说是Combine)只能看到值的变化,因此,它可以看到@Published结构实例的属性值的变化,而不能看到@Published类。如果您希望基于这些嵌套对象的属性值的更改来更新Ul,则使用嵌套对象的结构实例。如果必须使用类实例,请使用另一种机制显式地通知更改
2024-07-01 11:43:35 311
原创 [Combine 开发] collect、ignoreOutput的应用
在 Combine 框架中,collect()操作符用于将连续的元素组合成一个数组,并将这个数组作为一个事件发布给订阅者。
2024-01-26 15:09:34 394
原创 [Combine 开发] 寻找值
combile框架的 .first()、 .last()、 .min()、 .max()、 .output(at:)、 .output(in:)的用法
2024-01-23 15:19:55 365
原创 [Combine 开发] combineLatest、merge、zip的使用区别
combineLatest、merge 和 zip 是三个常用的操作符,用于组合和处理流式数据。以下是它们的区别以及在 Combine 中的使用场景
2024-01-22 15:46:41 550
原创 [Combine 开发] Controlling timing 时间控制
Combine框架,关于Controlling timing 时间控制几个常用方法
2024-01-16 16:24:21 936
原创 [Swift 开发] @globalActor
@globalActor 是 Swift 5.5 引入的一个新属性。它用于定义一个全局的执行器, 用于控制异步代码的调度和执行。
2023-06-19 15:21:12 1230
原创 [Swift 开发] @MainActor 自动主线程更新UI
Swift 5.5 引入了一个新的属性包装器 @MainActor,它提供了一种简单而安全的方式来在主线程上执行代码
2023-06-15 13:53:58 3051
原创 [Swift 开发] 数组线程安全 Actors
Actor 是一种并发编程模型,它通过限制只有一个线程可以访问 Actor 内部的状态来保证线程安全
2023-06-13 15:56:49 1439
原创 [微信小程序 开发] 云存储
云开发提供了一块存储空间,提供了上传文件到云端、带权限管理的云端下载能力,开发者可以在小程序端和云函数端通过 API 使用云存储功能。
2023-03-22 15:40:11 577 1
原创 [微信小程序 开发] 云函数
微信小程序云函数是微信小程序开发者可以用来在小程序中进行客户端编程的一种服务,它可以帮助开发者简化服务端编程,提高开发效率。微信小程序云函数可以让你在小程序中运行自定义的代码,而不需要你去搭建服务器,这样可以节省你的开发成本。
2023-03-21 16:22:51 324
原创 [微信小程序 开发] 云数据库
通过本文,我们可以学习到如何使用微信小程序云数据库来实现一些常见的数据库功能,包括创建云数据库、创建集合、添加数据和查询数据。
2023-03-20 16:54:10 2315
原创 [Swift 开发] async/await异步编程封装Alamofire
Alamofire 是一个强大的网络请求库,可以轻松实现异步编程。本文将介绍如何使用 async/await 封装 Alamofire,以实现更加优雅的异步编程。总结一下,本文介绍了如何使用 async/await 封装 Alamofire,以实现更加优雅的异步网络请求。通过使用 async/await,可以使得网络请求变得更加简洁、优雅,让开发者更加轻松地实现异步编程。然后,我们封装一下逻辑层,模拟了3个网络请求,其中包括(无参get, 有参get,无参post )首先,我们用Alamofire的。
2023-02-24 17:11:18 1543
原创 [SwiftUI 开发] 自定义Navigation的返回按钮事件
SwiftUI 为我们提供了一个具有许多功能的 NavigationView,它可以帮助我们快速构建出一个具有统一样式的应用程序。但是,有时我们需要自定义NavigationView,比如,我们想在视图之间添加自定义的返回按钮。在本文中,我将向您展示如何使用SwiftUI自定义NavigationView的返回按钮。接下来,我们需要添加一个自定义的返回按钮到NavigationView中。这样,就可以实现一个自定义的NavigationView,它具有一个美观的返回按钮。
2023-02-15 17:18:17 1525 2
原创 [SwiftUI 开发] 自定义 modifiers
SwiftUI 中的 Modifiers 可以用来修改视图的外观和行为。您可以使用现有的修饰符或自定义修饰符。自定义修饰符是一个结构体,实现了一个修改方法,该方法接受一个视图并返回一个已修改的视图。
2023-02-10 15:30:12 282
转载 Please ensure the provisioning profile is configured for this device. If not, please try to generate
Please ensure the provisioning profile is configured for this device. If not, please try to generate
2023-02-06 10:16:07 2040 1
原创 [Swift 开发] 解决深copy浅copy (isKnownUniquelyReferenced(_:))
浅拷贝(copy):是对于一个对象的顶层拷贝,拷贝父对象,不会拷贝对象的内部的子对象深拷贝(deepcopy):是对于一个对象所有层次的拷贝(递归),完全拷贝了父对象及其子对象
2023-01-12 16:12:12 1158
原创 [SwiftUI 开发] LazyVGrid & LazyHGrid 网格(UICollectionView)
LazyVGrid & LazyHGrid布局都需要[GridItem]数组来控制约束的GridItem有3种约束类型。
2023-01-10 15:59:09 1937
原创 [SwiftUI 开发] Widget 小组件
小组件可以在主屏幕上实现内容展示和功能跳转。系统会向小组件获取时间线,根据当前时间对时间线上的数据进行展示。点击正在展示的视觉元素可以跳转到APP内,实现对应的功能。小组件是一个独立于 App 环境(即 App Extension),小组件的生命周期/存储空间/运行进程都和 App 不同。App Extension 可以将自定义功能和内容扩展到应用程序之外,并在用户与其他应用程序或系统交互时向用户提供。例如,您的应用可以在主屏幕上显示为小部件。
2023-01-05 16:12:24 5584 3
原创 [SwiftUI 开发] 隐藏删除 ScrollBar in ScrollView
[SwiftUI 开发] 隐藏删除 ScrollBar in ScrollView。
2022-12-08 15:54:37 489
原创 [SwiftUI 开发] @State @Binding @ObservedObject @EnvironmentObject
EnvironmentObject环境变量,创建对象时,通过.environmentObject(person())传值。@ObservedObject和@Published相当于KVO注册监听,@ObservedObject修饰一个对象,那就是注册了监听,@Published修饰一个对象,表示这个对象可以被监听。,struct的属性是不可以改变的,在SwiftUI中如果想改变属性,需要加上@State。,传递变成了引用传递,这样父子视图的状态就能关联起来了。修饰器修饰后,属性变成了一个。.........
2022-07-27 13:53:59 1057
原创 [Swift 开发] 异步结果作为函数返回值
当您将异步结果作为函数返回值时,函数标记为异步,您就允许它挂起。当一个函数挂起自己时,它也会挂起它的调用者。所以它的调用者也必须是异步的。 为了指出异步函数中它可能挂起一次或多次的位置,使用了Semaphore(信号量) 关键字。 当异步函数被挂起时,函数线程会被阻塞。 当异步函数恢复时,从它调用的异步函数返回的结果流回原始函数,并从上次停止的地方继续执行。// 惯例来个Person类class Person { class func waitResult() -> [Int] {
2022-04-12 15:02:21 2979
原创 [Kotlin 开发] 高阶函数map、flatMap、reduce、fold
1. mapval list = 1..5val newList = list.map { "${it}元"}// 输出结果:// I/System.out: 1元// I/System.out: 2元// I/System.out: 3元// I/System.out: 4元// I/System.out: 5元map可以对数组进行操作2. flatMapval list = arrayOf( 1..3, 4..7)val newLi
2022-02-21 15:31:12 1709
原创 [Kotlin 开发] reduce和fold的区别
1.先写个小例子reduceprintln((0..5).reduce { acc, i -> Log.e("reduce ====","acc:"+acc+" i:" + i) acc + i})// 输出结果:// E/reduce ====: acc:0 i:1// E/reduce ====: acc:1 i:2// E/reduce ====: acc:3 i:3// E/reduce ====: acc:6 i:4// E/reduce ====:
2022-02-21 14:46:31 1973
原创 [Swift 开发] 一分钟会用Web Socket
一般网络请求时,只能client发请求,server回答。server不能主动给client发消息,Web Socket就能解决这个问题。1.导入框架import Starscream2.初始化对象var socket: WebSocket?var isConnected = falselet serverUrl = "ws://82.157.123.54:9010/ajaxchattest"var request = URLRequest(url: URL(string: .
2021-12-03 14:09:50 1132
翻译 [Swift 开发] 异常俘获 Do_Try_Catch
定义抛出Throw类型表示和抛出错误 在 Swift 中,错误由符合 Error 协议的类型值表示。这个空协议表明一个类型可用于错误处理。Swift 枚举特别适合对一组相关的错误条件进行建模,关联的值允许传达有关要传达的错误性质的附加信息。例如,您可以通过以下方式表示在游戏中操作自动售货机的错误条件: enum VendingMachineError: Error { case invalidSelection case insufficientFun
2021-11-26 10:42:02 309
原创 [Kotlin 开发] Android studio 全局查找替换
1: 全局查找 Edit -> Find -> Find in Path... 快捷键 command + shift + F2: 全局替换 Edit -> Find -> Replace in Path... 快捷键 command + shift + R
2021-07-26 11:09:03 371
原创 [Kotlin 开发] 协程
使用协程启动协程的三种方式runBlocking{} 开启一个协程,堵塞当前县城,不可以被cancel,必须等内部逻辑执行完成。fun test() = runBlocking { repeat(3) { Log.d("runBlocking","runBlocking:协程执行${it} " ) delay(1000) }}Log.d("done","开始")test()Log.d("done","结束")打印结果://D...
2021-05-21 15:17:44 134
原创 [Kotlin 开发] let、run、with、also、apply函数的用法
在Kotlin中有几个十分相似的标准库函数,他们之间也有一些差异,如果使用不当可能回得到与预期相反的效果,所以我们来简短的区分一下let、run、with、also、apply这5个标准库函数的区别。 Kotlin提供了这几种标准域函数主要是为了简化一些操作,让代码看起来更加的简洁,可读性更好。首先我建个模型类:class person(var username: String, var age: Int){ fun getCurrentName():String{ ret
2021-05-13 13:51:42 202 1
转载 [Android 开发] Mac Android Studio 模拟器无法联网
可能原因一:模拟器设置了网络代理通过Android Studio创建模拟器时,默认勾选了“ Use Android Studio HTTP proxy settings”, 然后模拟器不可以上网。解决方法:原文地址:https://blog.csdn.net/veloi/article/details/105193616...
2021-01-13 14:54:50 1647 5
原创 [Swift 开发] 判断俩数组是否相等[并集、交集、差集]
两个数组要进行数据的比较,最好先转换成集合.let set1 = Set([1, 2, 3, 4]) //集合转数组let array = Array(Set1)//数组转集合let set2 = Set(array)初始化俩集合数组里的对象如果是值类型可以直接比较,如果是饮用类型要实现Hashable或CustomDebugStringConvertible协议struct perpon:Hashable, CustomDebugStringConvertible{ v
2020-12-14 19:55:00 4580
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人