自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 收藏
  • 关注

原创 使用SPM(Xcode27), 并解决Package.swift不存在问题

但是如果这时候还是不能直接在工程里使用库,就要到TARGETS->General->Frameworks, Libraries, and ....这里手动添加一下需要用的库;然后再搜索框里填入URL,记得打开TUN模式直接转发流量,不然Xcode无法使用系统代理,裸连是不ok的。Package.swift是写库的人提供的文件,如果SPM读取不到,就无法加载对应的库。这样就可以看到工程文件下方的第三方库依赖是亮着的了(如果用不了,是暗的);然后就根据库的文档,可以正常使用库的功能。导入完,大概就是这些;

2026-10-13 13:08:10 239

原创 纯Appdelegate控制的老项目适配Xcode27(iOS27SDK)

对于老项目而言,只要把Appdelegate中管理窗口的部分,全部移植到SceneDelegate里,也就是Appdelegate只做一些初始化或者第三方库的配置工作。然后再在项目中用到Appdelegate(里的窗口)的部分,全部替换成SceneDelegate,就可以解决问题。大概率跑起来会发现第三方库支持的版本也过低,不被Xcode27支持,所以还需要修改第三方库的最低版本(如果是SPM直接Update to Latest就行了,Cocoapods安装的第三方库,则需要手动修改Podfile)

2026-10-13 10:47:45 394

原创 Xcode27使用CocoaPods方法

首先不建议使用CocoaPods,SPM适配更好;因为目前官方已经没有维护很久了,也不支持Xcode27,所以只能手动进行适配。

2026-10-13 10:35:14 349

原创 Swift学习笔记45-使用UIScene管理窗口的生命周期+半自定义TabBar

删掉该删的;这里省略恢复NavigationController的手势操作了。

2026-10-03 20:53:29 254

原创 Flutter:Dart学习笔记1:基础UI组件等

本文对比Swift与Dart在UI开发中的核心语法,介绍Flutter中通过import 'package:flutter/material.dart'引入Material Design控件库,使用Scaffold、AppBar、Text等组件构建页面。通过StatefulWidget与State管理状态,结合setState实现响应式更新。重点展示计数器页面的布局与交互逻辑,涵盖文本、图片、按钮等组件的使用,体现Dart在UI开发中的简洁与高效。

2026-09-20 02:22:46 247

原创 Swift学习笔记44-MVVM实战练习(更新中)

第一题是筛选题(我标记为Separate),根据用户选择,决定第2题到第4题的内容,然后第2题到第4题的得分又决定第5题到第7题的内容。所有题目一共是7题,最终计算总得分得出结果(我选择把得分传出,不在ViewModel里进行处理)。首先全部题目封装在一个Model里面,然后根据用户选择的选项不同,后续呈现的题目内容和选项也是不一样的,但是题目总数是一致的。在ViewModel里封装一些函数,然后以题号或者其他属性为参数,去动态筛选Model中的内容,筛选后再把题目添加到题库里。

2026-09-16 05:28:41 122

原创 OC基础语法(与Swift对比)-1

<think>我们只需要生成摘要,≤150字。内容是关于OC的.h/.m文件,类声明,属性修饰符,实现方式,初始化三步,示例。需要简明扼要。</think>摘要:本文介绍了Objective-C中.h与.m文件的分工,类的声明与实现,以及属性修饰符assign、strong、weak、retain、copy的用法区别。强调初始化三步走原则,并展示了实例化对象、属性赋值和方法调用的基本写法,类比Swift语法帮助理解。

2026-08-31 15:53:05 245

原创 Swift学习笔记43-Swift面试题目整合

async和await的核心作用是将异步代码以类似同步代码的形式表达,它摒弃了传统GCD或闭包回调容易引发的,一大堆嵌套导致代码看着晦涩难懂的问题,和内存泄漏的隐患。struct不依赖类的特性,相对于类占用的内存较小;filter(过滤器):就是接收一个返回布尔值的闭包作为条件,检验每个元素是否符合条件,只有返回结果为true,元素就会被保留,最终组合成一个新集合返回。map(映射):是Swift中的高阶函数,它接收一个闭包,并对集合内的每个元素执行闭包操作,进行值转换或类型映射,最后返回一个新的集合。

2026-08-30 16:51:44 213

原创 Swift学习笔记42-SwiftUI的属性包装器(讲解+面试)

在APP的入口创建ViewModel的实例,并通过.environmentObject()方法把这个实例挂载到根视图上,在任意子视图里就可以通过@EnvironmentObject提取这个实例,并使用ViewModel里的方法,非常方便。@AppStorege的作用是快速把某个属性,如isDarkMode写入UserDefaults,Key为”isDarkMode”,下次打开,或者去到其他页面也会保留这个属性,比如这里可以用来控制白天或者黑夜模式。设置整个View的主题偏好,将其与。

2026-08-30 16:03:30 219

原创 Swift学习笔记41-APP上架相关

4系列:抄袭问题,内容抄袭,图标抄袭等等。5系列:权限问题,用了不该用的权限。

2026-08-13 16:44:25 74

原创 OC学习笔记-面试题

本文总结了Objective-C编程中的7个核心知识点:1.四种属性修饰符(assign/strong/weak/retain/copy)的使用场景;2.__block防止循环引用的作用;3.Category分类的扩展功能用法;4.消息转发机制的三级查找流程;5.点击事件传递依赖的hitTest和pointInside方法;6.主线程sync同步调用会导致崩溃的注意事项;7.UI卡顿的常见原因及多线程优化方案。内容涵盖内存管理、运行时机制、事件处理等iOS开发关键概念。

2026-08-13 16:39:32 181

原创 Swift学习笔记40-MVC、MVP、MVVM架构(面试)

本文介绍了三种常见的iOS架构模式:MVC、MVP和MVVM。 MVC架构:最传统模式,用户操作View后,View传给Controller,Controller更新Model并刷新UI。 MVP架构:Presenter代替Controller协调职责,View遵循协议。Presenter获取Model数据并通过协议告知View如何显示。 MVVM架构:主要用于SwiftUI,采用响应式编程。ViewModel通过@Published属性自动通知View更新,实现数据和UI的自动同步。 文中提供了MVP和M

2026-08-11 15:29:30 283

原创 Swift学习笔记39-实战注意事项

本文总结了iOS开发中的关键注意事项,包括:避免使用全局变量释放页面;处理Cell事件时防止被上层控件拦截;优先使用系统API而非自定义实现;谨慎处理数组越界问题;优化TableView性能时避免临时变量和正确使用reload方法;实现展开收起效果时合理控制Cell高度;及时清理未使用的代码(但保留历史版本代码)。特别强调了重用机制下的注意事项和本地化文本的处理规范,为iOS开发提供了实用的技术指导。

2026-08-10 12:34:04 228

原创 Swift学习笔记38-UITextView的使用

本文总结了iOS开发中UITextView的常用设置方法,包括清除默认边距、禁用编辑/选中/滚动等行为控制API,以及通过扩展设置行间距的最佳实践。重点介绍了文本内容控制、交互行为管理、边距调整、键盘输入处理等核心功能API,并提供了UITextViewDelegate的常用回调方法说明,帮助开发者更高效地使用UITextView实现文本展示和编辑功能。

2026-08-07 23:15:28 197

原创 Swift学习笔记37-版本更新

3.打包完点distribute,release testing发包测试,testfilght是丢到线上。要用的是,App Store connect。注:过程中有什么问题就解决什么问题就解决什么问题,大概率是网络问题,重登重启可解.6.等邮件发过来(表示上传版本到苹果成功)大约5-10分钟。4.到developer apple 上,登录自己的账号。#warning("")字段标记更新的地方内容。5.app ➕需要更新的版本,填写更新信息。7.添加构建版本,提交以供审核(点两次)1.更改版本号(两个地方)

2026-06-25 13:35:33 43

原创 Swift学习笔记36-UICollectionView与瀑布信息流练习

摘要 iOS开发中重用机制主要通过UITableView和UICollectionView实现。两者使用流程相似: 继承对应协议(UITableView需实现UITableViewDelegate/DataSource,UICollectionView需实现UICollectionViewDelegate/DataSource) 自定义Cell类并配置样式 实现必须的dataSource方法(cell创建和数量) UICollectionView特点: 需要设置FlowLayout定义布局规则 必须注册Ce

2026-06-04 00:18:42 266

原创 Swift学习笔记35-本地化

本文介绍了多语言项目创建的流程:1. 创建项目时添加多语言支持;2. 在文件目录下创建默认语言文件;3. 通过侧边栏勾选所需语言自动生成对应文件。重点说明了多语言变量的使用方法:在不同语言文件中定义相同变量名但不同语言内容,通过NSLocalizedString方法即可根据系统语言环境自动显示对应语言内容。这种方法能实现内容的多语言切换,特别适合移动端应用开发。

2026-05-29 16:45:46 65

原创 Swift学习笔记34-MVC架构,SwiftUI与UIkit混编练习

本文介绍了在iOS开发中Model的分类和使用方法,重点围绕MVC架构展开。Model主要分为四种类型:存档数据传输Model、网络请求数据Model、数据库Model和页面渲染Model。文章提供了Swift代码示例,展示了如何创建基础Model结构体(如SimpleReportModel)和处理数据转换(如DichoBase)。在View层,使用SwiftUI构建界面组件(如ReportView和CelebritiesCell),通过传入对应的Model数据实现动态渲染。文中还强调了Model的设计原则

2026-05-29 16:37:51 259

原创 Swift学习笔记33-多线程与UI渲染

本文介绍了iOS开发中线程管理和UI渲染的关键要点。主要内容包括:1) 使用Thread.isMainThread检查主线程状态,通过DispatchQueue.global().async创建子线程;2) 强调UI更新必须回到主线程,示例展示了通过逃逸闭包将数据模型传回主线程的方法;3) 演示了SwiftUI与UIKit的混合开发,使用UIHostingController桥接两种框架,并通过网络请求获取数据后更新UI界面。文章提供了完整的代码示例,包括网络请求处理、数据模型传递和界面渲染的实现细节。

2026-05-26 07:47:53 75

原创 # Swift学习笔记32-网络请求(2)

解析请求到的内容,并用Model存放在函数中的里执行具体网络请求的时候,执行完毕返回的是dic,

2026-05-25 01:54:30 231

原创 Swift学习笔记31-网络请求

HTTP与HTTPS协议对比及POST请求实现 摘要: 本文对比了HTTP和HTTPS协议的主要区别,重点介绍了HTTPS的安全特性。HTTP采用明文传输,存在安全隐患,而HTTPS通过SSL/TLS加密确保数据传输安全。文章详细讲解了POST请求的实现方法,包括Swift语言中如何创建URLRequest、设置请求头和请求体,以及处理服务器响应。通过stringValueDic函数将JSON字符串转换为字典,展示了完整的网络请求处理流程。示例代码演示了如何构建异步网络请求,处理数据转换和错误回调.

2026-05-23 02:22:49 492

原创 Swift学习笔记30-数据库SQlite语句

创建一个名为ID的主键,数据类型是INTEGER CREATE IF NOT EXISTS chat (ID INTEGER PRIMARY KEY AUTOINCREMENT, chatID INTEGER, content TEXT, target TEXT, mineHead TEXT, otherHead TEXT )使用 INNER JOIN,当一张表中的数据等于另一张表时,将需要用的数据从其中一张表里SELECT出来,通过”表名.表的列“方式来定位数据。

2026-05-20 22:04:59 175

原创 Swift学习笔记29-数据库SQlite

本文介绍了在iOS应用中使用SQLite数据库存储消息的方法,包括两种实现方式:系统自带的SQLite库和第三方库FMDB。主要内容包括: 数据库配置 系统SQLite库的导入和桥接头文件设置 使用CocoaPods集成FMDB库 数据库管理实现 创建DataBaseManager结构体管理数据库 采用单例模式初始化数据库 在文档目录创建数据库文件 数据表操作 创建chat表并定义字段类型 实现数据插入功能 使用ChatTextModel作为参数传递数据 注意事项 建议1.0版本避免使用数据库

2026-05-19 05:05:50 492

原创 Swift学习笔记28-缓存

本文介绍了使用UserDefaults存储小型数据的方法,重点以聊天记录存储为例。UserDefaults适合存储基础数据类型(字典、数组、字符串等),但不适合存储超过2MB的数据或高级数据类型。实现步骤包括:1)将Model转换为字典形式存储;2)从字典还原为Model;3)根据chatID存取数据。具体通过四个方法实现:save()存储消息、toDic()转换Model为字典、toChatModel()从字典还原Model、getAllMsg()加载聊天记录。

2026-05-18 03:14:06 473

原创 Swift/UIkit学习笔记27-模块管理,发送位置信息

摘要: 本文介绍了iOS开发中基于MVC架构的模块划分,重点讲解了定位功能的实现流程。系统分为Model、View、ViewController和Public四个模块,采用Block传递界面事件。具体实现包括:在聊天页面获取定位权限,创建地图消息Cell(含小地图和地址信息),以及开发地图页面(集成高德地图SDK)。关键步骤涉及CLLocationManager权限管理、逆向地理编码和位置信息传递,最终实现点击发送按钮分享定位的功能。

2026-05-17 03:38:04 422

原创 Swift报错合集(Xcode编译器)

试图在一个实例上访问一个静态属性或方法。静态成员(static member)是与类本身关联的,而不是与类的具体实例(对象)关联。你只能通过类名来访问它们,而不能通过类的实例。编译器在处理某段代码时遇到了复杂性,导致它耗费了过多的时间来进行类型检查。具体来说,它建议你将复杂的表达式拆分成更简单的部分,以便编译器能更容易理解和处理。这是因为系统的安全沙盒(Sandbox)阻止了脚本在指定的目录下创建或写入文件。野指针,检查返回的东西是否有来源。大小写是否输入正确。这个是我不小心把函数写在另一个函数里了。

2026-05-15 17:48:31 488

原创 Swift学习笔记26-使用第三方库

本文介绍了iOS项目中集成高德地图SDK的完整流程。首先通过CocoaPods安装SDK并配置HTTPS访问权限,创建桥接头文件引入相关库。详细说明了Swift项目中调用OC代码的方法,包括Key配置和地图视图创建。针对常见的Sandbox权限问题,提供了通过修改Xcode的UserScriptSandboxing设置项的解决方案。最后展示了如何实现地图页面的跳转功能,为开发者提供了从SDK集成到实际应用的全流程指导。

2026-05-14 04:21:25 305

原创 UIKit学习笔记8-发送照片、拍摄照片并发送

现在要写这个部分,新开一页去放。思路是利用for…in来逐个打印组件设置两个数组,分别储存图片字符串和对应的文本字符串记得数组取名要取复数,表示里面不止一个元素只做这三个:照片、拍摄、位置。然后再setupUI()函数里设置图片按钮和文字标签,并为其添加事件使用for…in来逐个打印组件按钮文本使用回调,把索引以tag传出去。写一个函数,控制闭包被传出?在ChatViewController页面写一个,这是创建界面实例,并控制点击对应按钮,然后操作相关功能的。把相关绑定到点击按钮MoreVie

2026-05-14 04:16:12 383

原创 UIKit学习笔记7-录音并发送语音

本文介绍了使用UIKit实现类似微信语音发送功能的关键步骤。主要内容包括: 界面实现:创建语音按钮和录音按钮,设置按钮样式和状态切换逻辑 输入模式切换:通过布尔值控制键盘输入和语音输入的显示状态 权限处理:请求麦克风使用权限并处理授权状态 录音功能:使用AVAudioRecorder实现录音功能,包括开始录音、结束录音和取消录音 交互优化:处理滚动视图时自动收起键盘 关键代码展示了按钮创建、状态切换、权限请求和录音环境初始化等核心功能实现。文章还提到后续需要实现的录音存储、消息发送和播放功能。

2026-05-10 18:24:51 382

原创 UIKit学习笔记6-调用键盘、配置聊天输入栏

不同的字段表表示执行不同的操作的时候会发通知,发通知之后,执行某某操作(函数)。要为键盘的范围留出位置,所以我们在滚动视图原来的y(64)的基础上,往上顶一个键盘的高度。要实现的功能是让输入框随着键盘调用被顶到上方,所以这个函数要【计算键盘的高度】并实现重新设置**方法表示要取消当前文本框的第一响应者状态,取消了之后,文本框失去焦点,键盘就会被收回。定义下一条信息,表示它是ChatModel数组中的某个成员,用于设置下一条信息的头像等。输入框的位置,同样也是要在原来的y的基础上,往上顶一个键盘的高度。

2026-05-04 14:53:38 388

原创 UIKit学习笔记5-使用UITableView制作聊天页面

这篇文章介绍了使用UITableView制作聊天页面的思路和实现方法。主要内容包括: 采用MVC架构设计,分为Model、View和Controller三部分: Model负责存储聊天数据(头像、昵称、时间、内容等) View处理界面显示(自定义UITableViewCell) Controller管理逻辑和数据交互 关键技术点: 动态计算Cell高度和内容布局

2026-05-02 15:15:32 451

原创 UIKit学习笔记4-使用UITableView制作滚动视图

本文介绍了UITableView的使用方法,重点说明了如何通过继承UITableViewCell创建自定义单元格,以及如何配置UITableView的数据源和代理。文章详细讲解了三个关键函数:设置行数(numberOfRowsInSection)、配置单元格和设置行高。同时还介绍了如何创建滚动视图并设置其属性,以及如何定义单元格的UI组件和布局。通过使用Model渲染组件和复用单元格的方式,可以有效解决组件重复导致的内存问题。

2026-04-30 10:21:33 410

原创 UIKit学习笔记3-布局、滚动视图、隐藏或显示视图

文章摘要:本文介绍了自适应布局的实现方法,核心思路是利用父视图的frame控制子视图位置。通过获取视图宽度和高度实现多机型适配。布局要点包括:1)背景图设置使用.zero原点;2)按钮位置计算采用动态x/y值;3)组件间距使用标准UI值(16/24/8/4等);4)滚动视图尺寸实时计算内容高度;5)通过索引控制特定组件显示/隐藏。特别说明了箭头等右侧组件的定位方法:从屏幕宽度反向计算位置。

2026-04-29 08:15:48 181

原创 UIKit学习笔记2-组件嵌套、滚动视图等

本文介绍了iOS开发中三个关键功能的实现方法:1. 十六进制颜色转UIColor扩展,通过位运算实现颜色转换;2. 组件嵌套功能,通过创建自定义UIControl子类、数据模型和循环布局实现可复用组件;3. 滚动视图实现,使用UIScrollView解决内容超出屏幕的问题。文章详细讲解了每个功能的实现步骤,包括颜色转换算法、组件拆分思路、模型设计、布局计算和滚动视图配置,为iOS界面开发提供了实用的技术方案。

2026-04-28 01:33:40 426

原创 UIKit学习笔记1-创建项目(使用UIKit)、使用组件

/ 在这里说明:1.指定类型,代表具有系统预设的样式,比如文字颜色和字体,会根据用户的操作(比如按下或释放)改变外观,通常会有轻微的高亮效果。2.通过setTitle设置UIButton的属性: 这是要设置为按钮标题的字符串。: 这里的for参数指定了按钮的状态。.normal表示按钮的普通状态。按钮有多种状态,比如:.normal: 按钮处于默认状态,未被按下,也未被禁用。: 按钮被按下、点击时的状态。.disabled: 按钮被禁用,不可点击。.selected: 按钮在被选择状态。

2026-04-26 21:44:34 425

原创 SwiftUI学习笔记5-列表和文本字段

这个Button包含两个闭包,操作闭包包含命令式代码,标签闭包包含声明式视图代码。Button {} else {}//label:添加在其他闭包后面} label: {为label的Text添加内边距} label: {//为标签视图添加内边距,这将扩大整个按钮.//如果修饰符放在Button的层级,则不会对Text的内边距产生影响。

2026-04-24 03:42:44 466

原创 SwiftUI学习笔记4-按钮

aspectRatio(1, contentMode: .fit)表示如果图像的宽高比和可用空间不一致,会缩小到比较小的轴。有些 SF Symbols 是按层级组合的,包含可以呈现主色、次色和三级色的不同元素。封装性:将状态变量限制在声明的结构体或视图中,可以防止外部组件意外修改这个状态,从而更好地维护数据的一致性。明确性:使用 private 可以提高代码的可读性,指示该状态是内部使用的,不应从其他地方访问。ForEach在数量不定的时候使用,它可以规定显示多少个实例,最下面表示要显示的实例。

2026-04-23 22:34:42 386

原创 SwiftUI学习笔记3-布局和样式

左侧的Assets检查器:choosing View > Inspectors > Show Inspector.这里选择none,相同颜色应用于浅色和深色外观。然后在右边创建颜色。

2026-04-23 15:34:06 372

原创 SwiftUI学习笔记2

每个 Xcode 项目都包含一个视图。将使用一个结构来创建你自己的自定义视图如在text下设置,将会改变文本的颜色用属性来自定义视图里显示的东西,添加字符串,布尔值等属性,来控制图片的显示。

2026-04-22 18:47:45 175

原创 SwiftUI学习笔记1

概念教程(随便看看?.accentColor是蓝色(这个好像是系统的蓝色)

2026-04-22 16:58:04 346

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除