自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(314)
  • 资源 (1)
  • 收藏
  • 关注

原创 SPM(Swift Package Manager)开发及常见事项

spm还可引入oc / c / c++,至于二进制化或者静态库大家可以共同探讨,这方面的网上资料较少。

2023-08-06 22:02:28 4079

原创 SliverPersistentHeader组件 实现Flutter吸顶效果

本文参考自:https://www.jianshu.com/p/b5292ef7c38c。

2023-07-23 21:37:39 4290

原创 iOS性能优化-异步绘制与异步底层View处理

基于UIKit的性能优化似乎已经到了瓶颈,无论是使用frame代理snpakit,缓存高度,减少布局层次,diff刷新,压缩图片,选择合适队列,选择高性能锁,也不能满足当前庞大而又复杂的项目优化。每次加载刷新的时候过长时间的VC加载,或者collectionView刷新的时候卡顿,真是有点不知所措。那么,有没有比上述内容更高级的优化方法呢?答案是有的,那就是异步绘制。(有关异步绘制内容,更好的处理是选择YYText或者AsyncKit这些成熟的作品,本文仅限于介绍入门,请不要将示例直接用于生产环境!

2023-06-04 21:55:36 4096

原创 Flutter 调用摄像头扫描二维码插件

原生平台如果想要实现二维码扫描很简单,例如iOS可以根据Version库或者AVFoudation库很快定制出相应工具来,Flutter只能依赖第三方插件了。

2023-04-07 23:03:19 937 1

原创 diff算法swift版

前几天用chatgpt生成diff算法,配上swift的简洁语法,可以称之为锦上添花。

2023-04-05 21:49:14 221

原创 Flutter 自定义SwitchButton

(AppBar中间的SwitchButton)

2023-04-05 21:20:46 348

原创 Flutter 解析本地json Unhandled Exception: type ‘_ByteDataView‘ is not a subtype of type ‘String‘ in type

首先先检查路径是否正确,以及yaml配置路径是否正确。都正确可以看调用方法是否为。

2023-04-01 22:22:08 279

原创 LRU在UIImageView的extension中简单应用

方法时候根据url作为key先判断缓存里面是否存在image对象,如果有,直接显示即可,而没有的话,先走placeholder的路径,然后异步执行Session的任务,下载完后将image对象放入缓存里面,再设置image即可。,叫做“最近最久使用”。这是不可接受的,因此,自然而言地想到了使用hash字典来充当缓存。有了LRU的实现,就可以把普通的hash字典换成LRU缓存了,在设置完指定最大容量后,新的url请求过来就会把最久远未使用的image对象移除缓存,达到了动态使用、动态平衡的结果。

2023-03-04 15:12:23 522

原创 基于UIView实现UIKeyInput协议来实现输入框 TextView

之前有次需求是要求做cell内的输入框动态换行,顺便研究了一下UITextView的实现,核心是UIKeyInput协议,重写这三个方法来完成输入框。第一个方法判断是否有文字,第二个是插入文本是的回调,第三个方法是删除按钮按下时的回调。整个输入框通过来实现。

2023-03-01 21:08:12 627

原创 Xcode Archives打包上传 / 导出ipa 发布至TestFlight

Xcode自带的Archives工具可以傻瓜式上传到App Store Connect分发这里以分发到TestFlight为例进行操作。环境:Xcode 14。

2023-02-19 20:51:28 4114

原创 M1配置Flutter环境及运行项目常见问题解决方法

解决:target/Flutter/Generated.xcconfig,检查其内的FLUTTER_APPLICATION_PATH=/Users/mac_m1/xxx 是否为flutter启动路径。M1机型是arm架构,而现在大部分mac还是x86架构。解决:AS内搜该插件,检查该插件的最低iOS deployed target是否与Xcode项目最低版本持平。解决:确定flutterSDK已配置在zshrc中,使用。解决:xxx.xcconfig文件未生成,需。,网络不好情况下请使用恰当的网络pod。

2023-01-17 11:01:34 1047

原创 UITableView内输入框(UITextView)换行

因为如果在Cell的init方法里面设置UITextView的contentOffset,是只对那一时刻的UITextView生效,一旦有文字内容变换,其contentOffset又会重新计算,导致前面失效。当然,不是所有的人的业务都是相同的,设置完成后可能发现并不符合自己的业务需求,发现文字不是竖直方向的居中。UITableView内存在一个Cell,该Cell内有一输入框可以输入文字,超出输入框宽度则换行展示,即该Cell高度要增加。3:判断是否换行后更新UITableView即可。

2023-01-16 17:09:43 1681

原创 iOS: 禁用屏幕旋转功能后获取屏幕方向

项目本身支持横竖屏,但是要在特定ViewController下禁用该VC的方向,即对屏幕旋转不敏感;但又要满足能获取到当前屏幕的方向

2023-01-08 22:51:48 910

原创 * daemon not running; starting now at tcp:5037 adb: CreateProcessW failed:

网上解决办法是netstat -ano | findstr “5037”,试了之后控制台没找到这个进程。这里另辟蹊径在AS的Terminal里面直接输入adb devices,就能运行成了。

2022-12-23 09:53:05 564

原创 Undefined symbols for architecture arm64

我的情况是阿里云的一键登录是老版本的,更新之后就正常使用没看更新文档,编译期间报出该错误,查看文档得知新版本需要导入Network.framework,导入后遂可编译。原因:未导入相关framework。

2022-12-11 21:35:10 568

原创 CGContextSaveGState: invalid context 0x0. If you want to see the backtrace

猜测原因: 和CG开头相关的内容肯定是和视觉相关的内容。我的问题是有一个端口进程会扫描UIWindow下所有UIView的子类,结果这个进程卡住不扫描了,仔细检查,原来是重写UIControl时忘记给frame了。解决方法:检查与视觉相关的属性,例如frame,查看是否符合条件或不为空。

2022-11-27 21:45:19 757

原创 一种子模块化的基于Hash刷新机制的iOS端数据驱动的MVVM架构思考

iOS端的架构基准无非就是苹果推荐的MVC,经典MVVM,解耦性极好的MVP,新生代的VIPER及Uber推出的Ribs,当然还有臭名昭著的CCC(所有代码都放在ViewController里面)。架构的实施标准无非就是解决软件工程中两个重要问题:如何加快软件开发速度;如何解决软件工程后期维护问题。

2022-09-04 15:50:16 1417

原创 自定义NavigationBar--使用UIView进行绘制

iOS中系统自带的UINavigationBar虽然功能强大但使用起来有各种各样的小问题,处理起来很是麻烦。当然也有一些优秀的第三方NavigationBar同样功能也很强大,使用起来更为便捷,但仍然存在的一个问题是其系基于继承自UINavigationBar的子类,因此也有诸如此类的问题如模态弹框的展示。UINavigationBar本质上是基于UIView的可以hook到UIViewController属性的特殊类,后者的hook很难做到那么前者基于UIView是可以轻易地实现的。......

2022-07-30 16:03:07 822

原创 Dart Log工具类

Dart Log工具类。

2022-07-23 17:06:02 441

原创 GCD简单了解

一:基础名称GCD的创建依赖于任务与队列这两个概念。任务就是block内执行的操作,block内调用的某个方法。任务有两种方式,一为同步执行,二为异步执行。二者的区别在于是否具备开启子线程的能力,执行的任务在队列中执行的方式(顺序)。同步执行的特点同步添加任务到指定的队列中,在添加的任务执行结束之前,会一直等待,直到队列里面的任务完成之后再继续执行。只能在当前线程中执行任务,不具备开启新线程的能力。异步执行的特点:异步添加任务到指定的队列中,它不会做任何等待,可以继续执行任务。

2022-07-23 16:55:44 1057

原创 Build finished with errors/Executable Not Found

BuildPhases->CompileResources,删除有问题文件(如过文件过多可选择右上角Filter输入框直接定位有问题的文件)可能系部分文件未删除干净,例如手动从Finder删除,或选择removerefrence,导致CompileSources残留有文件索引。编译期间有Errors错误但编译通过。install时提示可执行文件未找到。...

2022-07-23 16:51:59 321

原创 OpenCV.相机使用

相机使用相机的使用依赖VideoCapture类与具体的硬件设备VideoCapture类new VideoCapture对象的时候,一个构造器为index的构造器决定了初始化时摄像头位置,0代表前置(面向用户),1代表后置。isOpened() 方法返回是否可用避免竞争资源。Java代码(JavaFX Controller层)相关图片...

2022-06-03 17:50:07 431 1

原创 OpenCV.Harris角点检测

模板匹配模板匹配属于模式识别算法,用以从已定义的图片中与模板寻找相似内容。其函数声明如下:matchTemplate(src, templ, result, method);其中src为输入图片(大小W X H),templ为模板图像(大小w X h),result为输出的结果,大小为(W - w + 1) X (H - h + 1);method为计算方法。Java代码(JavaFX Controller层)public class Controller{ @FXML private

2022-06-03 17:22:29 197

原创 浅析Swift中的associatedType与objc_setAssociatedObject

前言:associatedType含义:关联一个协议使之以类似泛型参数方式编译。这句话是很抽象的,简单来说,当某个接口类内的协议参数逻辑是在Runtime期间完成的,为了确保安全性以及Buildtime期间就能发现问题,可以采用关联一个协议再命名具体实现逻辑的协议方式进行。场景:设存在一个协议为SmartDeivce,负责具体智能设备的抽象协议,由此产生PadDevice与PhoneDevice。protocol SmartDevice { }class PadDevice: Sm

2022-05-31 10:44:14 679

原创 Kotlin报错:Can‘t create handler inside thread that has not called Looper.prepare()

报错:Can’t create handler inside thread that has not called Looper.prepare()解决方法:在需要UI控件调用的前后加上prepare()与loop()方法,如下所示:Looper.prepare();Toast.makeText(getApplicationContext(), "test", Toast.LENGTH_LONG).show();Looper.loop();有点奇怪的是一般而言使用Java单独在某个类里面(非

2022-03-10 22:00:18 2666

原创 property follows cocoa naming convention for returning ‘owned‘ objects

Xcode报错:property follows cocoa naming convention for returning ‘owned’ objects原因:Cocoa框架下不允许有与系统关键字(非语言关键字保留)相冲突的前缀。解决方法:去掉冲突的前缀。例如这里为copyButton,改为意义相近即可:replicateButton...

2022-03-07 08:55:59 360

原创 @Select Parameter index out of range (1 > number of parameters, which is 0).]

MyBatis遇到了一个很奇怪的问题,@Select注解一直报错:Parameter index out of range (1 > number of parameters, which is 0).]参数匹配完成后仍然报错,仔细检查后仍不行遂注释掉而后重写(注解完全一致),结果竟然正常了,不知道这是什么错误引起的。我的业务如下所示:之前用Xcode写iOS也有一个差不多的问题,就是代理方法没有执行,手动重写即可。碰到这样的情况仔细检查代码和配置后仍未果,可注释掉重写试试。...

2022-02-05 21:31:08 245

原创 Ambiguous mapping. Cannot map ‘Controller‘ methodhere is already ‘Controller

抱错:Ambiguous mapping. Cannot map ‘Controller’ methodhere is already 'Controller原因:未对当前@RequestMapping指定路由解决方法:添加具体的路由路径,如下所示(不能重复):@RequestMapping(value = "xxx")

2022-01-30 13:26:56 672

原创 ParseError at [row,col]:[30,13] Message: expected start or end tag

Android Studio报错:ParseError at [row,col]:[30,13] Message: expected start or end tag原因:某文件(xml)代码有问题,通常为多了”>“,空格等解决方法:删除多余的符号并Sync

2022-01-23 16:25:10 3708

原创 Invoke-customs are only supported starting with Android O (--min-api 26)

Android Studio报错:Invoke-customs are only supported starting with Android O (–min-api 26)解决方法:在Build.gradle(Module: app)内android节点添加如下闭包:compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8}

2022-01-16 20:53:52 1683

原创 Cocoa: keyEquivalent(NSXXFunctionKey)&& modifierFlags

Cocoa开发:快捷键常见的keyEquivalent值:NSUpArrowFunctionKey = 0xF700, NSDownArrowFunctionKey = 0xF701, NSLeftArrowFunctionKey = 0xF702, NSRightArrowFunctionKey = 0xF703, NSF1FunctionKey = 0xF704, NSF2FunctionKey = 0xF705, NSF3FunctionKey = 0xF706, NSF4Funct

2022-01-11 20:41:20 1737

原创 OpenCV.模板匹配

模板匹配模板匹配属于模式识别算法,用以从已定义的图片中与模板寻找相似内容。其函数声明如下:matchTemplate(src, templ, result, method);其中src为输入图片(大小W X H),templ为模板图像(大小w X h),result为输出的结果,大小为(W - w + 1) X (H - h + 1);method为计算方法。Java代码(JavaFX Controller层)public class Controller{ @FXML private

2021-12-21 21:19:25 2463

原创 Swing应用程序美化--FlatLaf (IDEA风格)

前言:Swing默认主题已经无法适应现在的软件界面设计风格,第三方发行者推出的FlatLaf主题拥有很漂亮的设计风格,使用也很简单。依赖:进入如下地址:https://search.maven.org/artifact/com.formdev/flatlaf/1.6.5/jar然后选择最右侧的Download选择下载到本地为jar包。添加依赖方式与普通jar包一致。嫌手动导入麻烦的直接配置pom即可:<dependencies> <dependency&gt

2021-12-19 20:48:25 7425

原创 OpenCV.直方图比较

直方图比较直方图系图像的本身属性之一,所受外界操纵变化较小,可用来比较图像间的相似度。假设两幅图像的直方图为H1与H2,其距离d则表示其相互匹配的程度,下面是OpenCV提供的计算方法:compareHist(H1, H2, method);H1与H2系Mat对象,method系计算方法,枚举类型,其值如下:HISTCMP_CORREL相关性HISTCMP_CHISQR卡方HISTCMP_INTERSECT相交HISTCMP_BHATTACHARYYA巴氏距离HI

2021-12-19 20:25:06 3031

原创 Errors were encountered while preparing your device for development. Please check the Devices and Si

报错:Errors were encountered while preparing your device for development. Please check the Devices and Simulators Window.原因:设备中途插拔SIM卡、或强制关闭了某项服务解决方法:重启设备

2021-12-19 10:56:54 315

原创 OpenCV.直方图均衡化

直方图均衡化直方图均衡化其作用为改变原有的图像直方图分布,用改变后的灰度LUT方式重建图像,来调整图像的亮度与对比度。其函数声明如下:equalizeHist(src, dst);其中src为单通道的8单位灰度图像,dst为输出源。Java代码(JavaFX Controller层)public class Controller{ @FXML private Text fxText; @FXML private ImageView imageView; @FXML pu

2021-12-09 20:28:49 2519

原创 OpenCV.图像直方图

图像直方图图像直方图反映的是图像的统计学特征,可大概看出其分布特征。假设某输入源为普通图像,经二值化后其显示像素值范围为0~255,其像素值经过排序后呈正常分布,那么某一像素值或某一像素范围可大概描述其像素特征。即其BIN(BIN越多,直方图对颜色的分辨率越强)取值范围越大,其空间分布越平均,越小则会有尖锐。基于此可以统计图像的BIN以此来绘制其直方图,其函数声明如下:calcHist(images, channels, mask, hist, histSize, ranges);各参数解释如下:

2021-12-07 21:20:17 721

原创 OpenCV.轮廓发现与绘制

轮廓发现与绘制一般而言,图像的轮廓都是由一系列的像素点构成,这些像素点属于二值图像的前景图像,每个轮廓都是一组点,而各组点则组成了轮廓。该方式的原理很复杂,简述即通过定义一系列的边缘点类型与拓扑集合结构类型,然后对二值图像的扫描来完成边缘类型的寻找与拓扑结构的构建,以此完成轮廓的发现。轮廓发现的函数声明如下:findContours(image, contours, hierarchy, mode, method, offset);各参数解释如下:image8单通道的输入图像。conto

2021-12-04 09:39:19 2540

原创 OpenCV.霍夫圆

霍夫圆霍夫圆的变换与霍夫直线类似,其原理较为复杂,这里暂时不以叙述。其检测实现是以灰度图像来找到候选区域,然会进行霍夫检测,以此减少算法的时间复杂度。但该方式极易受到噪声影响,对图像的噪声敏感,故先须进行噪声抑制处理。其函数声明如下:HoughCircles(image, circles, method, dp, minDist, param1, param2, minRadius, maxRadius);各参数解释如下:image8单位通道的灰度图形。circles输出的3个向量的数

2021-12-01 21:01:01 3355

原创 OpenCV.霍夫直线

霍夫直线HoughLinesP(images, lines, rho, theta, threshold, minLineLength, maxLineGap);各参数解释如下:images表示出入图像,8单位通道类型,一般为二值图。ines表示输出的每个直线的极坐标方程的两个参数。rho表示极坐标空间r值的每次步长,一般为1.theta表示角度,每次移动1即可。threshold表示极坐标中该点的累计数,累计值越大,得到的直线可能就越长。一般而言其取值范围为30

2021-11-30 20:06:03 2145

ModelGoon java代码自动生成UML图

ModelGoon,Eclipse插件。由 java代码可自动生成UML类图、协作图、顺序图等,操作简单

2020-12-03

空空如也

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

TA关注的人

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