- 博客(160)
- 资源 (3)
- 收藏
- 关注
原创 iOS_灵动岛<Dynamic Island>
苹果在 iPhone 14 Pro 及 iPhone 14 Pro MAX 上推出了灵动岛。灵动岛可以通过点按、长按、轻扫来进行交互,最多支持两个应用同时“登岛”。灵动岛全称 Dynamic Island,作为 iOS 中实时活动(Live Activities)功能的一部分,用来展示需要实时更新的消息。展现形式Compact<紧凑>、Minimal<最小化>、Expanded<扩展>,在开发提交的时候,必须适配这三种形式UI尺寸适配<尺寸单位Points圆角半径均为44。机型。
2023-06-29 17:15:28 1984
原创 SwiftUI_属性装饰器
修饰器的属性存储到一个特殊的内存区域,并且这个区域和。会根据新的属性值重新创建视图。装饰过的属性发生了变化,修饰器我们可以关联出。创建具有初始值的变量。
2023-04-12 17:02:07 499
原创 Flutter_Library not loaded: @rpath/App.framework/App
问题描述更新了FlutterSDK,模拟器运行无问题,真机运行崩溃报错结果如下:dyld[15588]: Library not loaded: @rpath/App.framework/App Referenced from: /private/var/containers/Bundle/Application/42B64C9D-DDC4-4DF3-9287-068E4EE2EBDB/Merchant.app/Merchant Reason: tried: '/usr/lib/sw
2022-03-25 10:34:29 11999
原创 iOS_dispatch_group相关代码实现
目录`dispatch_group_create``_dispatch_group_create_with_count``dispatch_group_enter`代码块`dispatch_group_leave`代码块`_dispatch_group_wake``dispatch_group_notify``dispatch_group_notify_f``_dispatch_group_notify`代码dispatch_group_createdispatch_group_tdispa
2022-02-12 17:10:50 1257
原创 iOS_dispatch_semaphore 相关代码
目录`dispatch_semaphore_create`代码`dispatch_semaphore_wait`代码`dispatch_semaphore_signal`代码相关的一些宏定义dispatch_semaphore_create代码 信号量创建dispatch_semaphore_tdispatch_semaphore_create(long value){ dispatch_semaphore_t dsema; // If the internal value is
2022-02-12 17:01:22 1300
原创 iOS_dispatch_sync同步实现/死锁
dispatch_sync实现/死锁`dispatch_sync`方法实现调用`dispatch_barrier_sync`代码块`_dispatch_barrier_sync_f_inline`代码块`_dispatch_queue_try_acquire_barrier_sync`代码块`_dispatch_queue_try_acquire_barrier_sync_and_suspend`代码块`_dispatch_sync_f_slow`代码块`__DISPATCH_WAIT_FOR_QUEUE_
2022-01-09 15:33:07 1815
原创 Xcode_Xcode13_shell指令_“.a“文件的生成和合并
新增TARGET点击工程内TRTGETS区域的左下角+按钮,然后会弹出以下选择框,选中图示图标,并点击Next生成一个新的TARGET新增RunScript选中上一步生成TARGET,选择Build Phases,点击+,新增RunScript复制以下指令到RunScript,并修改TARGET_NAME#TargetNameTARGET_NAME=WSKStaticLibrary#输出文件夹路径OUT_DIR=${SRCROOT}/ProductsUNIVERSAL..
2021-12-25 14:27:54 636
原创 iOS_导入Framework出现的问题
问题提示信息:Building for iOS Simulator, but the linked framework ‘xxx.framework’ was built for iOS.解决方案:修改项目配置<Build Setting>里面的Validate Workspace为Yes,则正常编译
2021-12-24 14:54:31 1253
原创 数据结构与算法_给定数组和目标值,返回目标值位置
题目描述:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置,如果数组中不存在目标值 target,返回 [-1, -1]。设计并实现时间复杂度为 O(log(n)) 的算法解决此问题。编写语言Swiftfunc seek(numArray: [Int], target: Int) -> (Int, Int) { if numArray.count == 0 { return (-1, -1) } var min
2021-12-23 17:27:36 523
原创 数据结构与算法_汉诺塔
汉诺塔相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如图)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。编写语言Swiftfunc hanno(num: Int, columnFrom: String, columnTemp: String
2021-12-23 17:20:17 2190
原创 数据结构与算法_斐波那契数列
斐波那契数列:斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,…,这个数列从第3项开始,每一项都等于前两项之和。编写语言Swift写法1:递归func calculateFunc(num: Int64) -> Int64 { if num <= 1 { return num } return calculateFunc(num: num-1)+calculateFunc(num: num-2) }
2021-12-23 17:14:20 1415
原创 Xcode_Xcode13_shell指令_framework生成以及合并
新增TARGET点击工程内TRTGETS区域的左下角+按钮,然后会弹出以下选择框,选中图示图标,并点击Next生成一个新的TARGET新增RunScript选中上一步生成TARGET,选择Build Phases,点击+,新增RunScript复制以下指令到RunScript,并修改FMK_NAME# 设置工作Target以及生成的framework文件名,这个必须根据target来修改FMK_NAME=WSKFramework# 生成framework临时工作区域WRK..
2021-12-23 16:47:53 2044
原创 iOS_MethodSwizzling_黑魔法坑点与解决方案
坑点1:多次进行方法交换,会将方法替换为原来的实现解决方法:利用单利进行限制,只进行一次方法交换// 解决坑点1+ (void)load{ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ [RuntimeTool wsk_methodSwizzlingWithClass:self oriSEL:@selector(wsk_oriFunction) swizzledSEL:@selec
2021-11-27 17:24:08 1829
原创 Swift_代码混淆
1. 新建相关文件新建文件confuse.sh和func.list创建文件方式如下:$ cd ~/Desktop/ceshi$ touch confuse.sh$ touch func.list最终结果如下:2. 导入文件至项目将创建的confuse.sh文件以及func.list文件导入项目最终结果如下3. 修改项目配置3.1 修改TARGETS配置如果没有RunScript。请点击红框内+进行新增RunScript内输入的文本$PROJECT_DIR/confuse.
2021-11-24 16:42:25 2839
原创 iOS_cache_t
目录方法缓存`cache_t`部分代码`cache_t`的结构`bucket_t`的结构代码`bucket_t`查找缓存`cache_t::expand()``cache_t::reallocate()``cache_fill_nolock`方法缓存cache_t在方法被调用后,cache_t会进行一次缓存缓存流程< cache_fill_nolock 代码流程>1、缓存入口cache_fill_nolock 进入,判断是否存在缓存,如果有,则return2、如果不存在缓存,
2021-10-30 17:04:55 1423
原创 iOS_类<Class>
目录类的结构属性、实例方法、协议以及类方法存储相关结构体代码实现`class_rw_t`代码实现`class_ro_t`代码实现`method_array_t`代码实现`property_array_t`代码实现`protocol_array_t`代码实现`list_array_tt`代码实现类的结构类Class是一个objc_class *类型的结构体指针 ,typedef struct objc_class *Class结构体objc_class继承自结构体objc_objectstrcut
2021-10-24 17:55:22 166
原创 iOS_isa结构
联合体与位域共用同一内存空间,联合体内占用空间最大的那个@interface Trnk : NSObject@property (nonatomic, assign) BOOL front;@property (nonatomic, assign) BOOL back;@property (nonatomic, assign) BOOL left;@property (nonatomic, assign) BOOL right;@end#define DirectionFrontMask
2021-10-23 18:41:59 1392 1
原创 iOS_内存对齐原则
内存对齐原则1、数据成员对齐规则:结构体(struct)或联合体(union)的数据成员,第一个数据成员放在 offset 为 0 的地方,后续每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说数组、结构体等)的整数倍开始(比如int为4字节,则要从4的整数倍地址开始存储)2、结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素大小的整数倍地址开始存储(strcut a里存有 struct b,b里有结构体char,int 等,那么b应该从
2021-10-23 16:41:20 296
原创 Xcode_xcode_13.0导入第三方组件Kingfisher报错解决
在Debug模式下运行无错误、当切换为Release模式进行打包是会进行报错报错提示大致如下,截取其中一段,均是由于SwiftUI导致~/Merchant/Pods/Kingfisher/Sources/SwiftUI/ImageBinder.swift:51:23: error: cannot find type 'Binding' in scope var isLoaded: Binding<Bool> ^~~~~~~~/.
2021-10-22 13:50:48 6113 2
原创 Swift_base64转化为Data_URL转化为Data
base64字符串转化为Data// base64 -> Data?let oldString = "base64字符串"let base64String: String = oldString.replacingOccurrences(of: "data:image/png;base64,", with: "")let base64EncodedData: Data? = Data(base64Encoded: base64String, options: Data.Base64Deco.
2021-10-20 20:07:03 1535
原创 Flutter_flutter2.0_填坑
替换项目旧新MediaQuery.of(context,nullOk: true);.of(context);BuildContextancestorStateOfTypefindAncestorStateOfTypeBuildContextancestorRenderObjectOfTypefindAncestorRenderObjectOfTypeBuildContextinheritFromWidgetOfExactTypedependOn.
2021-05-08 14:09:40 1922 1
原创 MAC_cocoapods切换镜像源_记录
步骤1$ cd ~/.cocoapods/repos 步骤2$ pod repo remove master步骤3-此镜像源为清华源$ git clone https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git master // 清华源$ git clone https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git master // 北京外国.
2021-03-16 21:25:51 1732
原创 Swift_WKWebView循环引用问题解决方法
1、创建一个新类WSKWeakScriptMessageDelegate代码示例如下:import UIKitimport WebKitclass WSKWeakScriptMessageDelegate: NSObject,WKScriptMessageHandler { weak var scriptDelegate:WKScriptMessageHandler! init (scriptDelegate:WKScriptMessageHandler) { su
2020-12-07 09:19:56 547
原创 Swift_指定位置切圆角
切圆角方法extension UIView { /** * 切圆角 * - Parameters: * - conrners * - radius 圆角弧度 */ func addCorner(conrners: UIRectCorner , radius: CGFloat) { let maskPath = UIBezierPath(roundedRect: self.bounds, byRoundingCorne.
2020-10-22 12:23:50 1179
原创 iOS_iOS14.0适配
iOS14.0适配,记录!适配UIPageControl出现的问题:iOS14以后删除了pageImage 与currentPageImage,不能再通过KVC修改控制器的图片。解决方案:借助iOS14新增字段preferredIndicatorImage,我们可以修改指示器小圆点的大小以及形状,然后借助currentPageIndicatorTintColor与pageIndicatorTintColor来确认不同状态下小圆点的颜色。部分代码示例:::UIPageControl *pag
2020-09-21 15:31:45 2453
原创 iOS_日历中写入日程_简单功能实现
简单的实现在日历中写入日程1、添加隐私权限Privacy - Calendars Usage DescriptionPrivacy - Reminders Usage Description2、代码实现如下- (void)saveCalenda{ EKEventStore *eventStore = [[EKEventStore alloc] init]; __weak typeof(self) weakSelf = self; if ([eventStore respond.
2020-06-03 15:44:38 1658
原创 iOS_3DTouch使用
只支持iOS9.0以后的系统使用方法如下 // 创建item UIApplicationShortcutItem *item = [[UIApplicationShortcutItem alloc] initWithType:@"type1" localizedTitle:@"标题1" localizedSubtitle:@"副标题1" icon:[UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeComp.
2020-05-28 17:05:04 318
原创 iOS_PDF文件合并
PDF文件合并// 返回值为合并后的pdf文件路径,存储在沙盒内- (NSString *)mergePDFFiles:(NSArray *)listOfPaths { // File paths NSString *fileName = [NSString stringWithFormat:@"合并后的文件%d.pdf",arc4random_uniform(100)]; NSString *pdfPathOutput = [[NSSearchPathForDirecto.
2020-05-25 16:43:30 559
原创 iOS_iOS9.0与iOS10.0+,TabBar层级对比
最近的项目需要支持iOS9.0,需要自定义TarBar,在进行自定义的过程中,出现了一些问题,其根本原因就是iOS9.0与iOS10.0+系统的差别,对TarBar进行层级的修改。如下图所示,可以看出。iOS10.0以后将背景图_UITabBarBackgroundView与顶部横线UIImageView视图进行合并,合并为_UIBarBackground。...
2020-05-13 14:20:33 255
原创 iOS_处理网络请求数据打印问题_记录用
//// WSKPrintJsonLog.h// SuperSaleApp//// Created by 王盛魁 on 2020/3/5.// Copyright © 2020 wangsk. All rights reserved.//#import <Foundation/Foundation.h>//// WSKPrintJsonLog.m// SuperSaleApp//// Created by 王盛魁 on 2020/3/5.// Cop
2020-05-12 14:57:41 498
原创 iOS_常用判断以及格式校验方法_记录用
空字符串转化+ (NSString *)convertNullString:(id)object{ if (!object) { return @""; } if (object && [object isEqual:[NSNull null]]){ return @""; }else if ([object isKindOfClass:[NSNull class]]){ return @""; }.
2020-05-12 14:51:53 394
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人