- 博客(314)
- 资源 (1)
- 收藏
- 关注
原创 SPM(Swift Package Manager)开发及常见事项
spm还可引入oc / c / c++,至于二进制化或者静态库大家可以共同探讨,这方面的网上资料较少。
2023-08-06 22:02:28 4432
原创 SliverPersistentHeader组件 实现Flutter吸顶效果
本文参考自:https://www.jianshu.com/p/b5292ef7c38c。
2023-07-23 21:37:39 4920
原创 iOS性能优化-异步绘制与异步底层View处理
基于UIKit的性能优化似乎已经到了瓶颈,无论是使用frame代理snpakit,缓存高度,减少布局层次,diff刷新,压缩图片,选择合适队列,选择高性能锁,也不能满足当前庞大而又复杂的项目优化。每次加载刷新的时候过长时间的VC加载,或者collectionView刷新的时候卡顿,真是有点不知所措。那么,有没有比上述内容更高级的优化方法呢?答案是有的,那就是异步绘制。(有关异步绘制内容,更好的处理是选择YYText或者AsyncKit这些成熟的作品,本文仅限于介绍入门,请不要将示例直接用于生产环境!
2023-06-04 21:55:36 4249
原创 Flutter 调用摄像头扫描二维码插件
原生平台如果想要实现二维码扫描很简单,例如iOS可以根据Version库或者AVFoudation库很快定制出相应工具来,Flutter只能依赖第三方插件了。
2023-04-07 23:03:19 1112 1
原创 Flutter 解析本地json Unhandled Exception: type ‘_ByteDataView‘ is not a subtype of type ‘String‘ in type
首先先检查路径是否正确,以及yaml配置路径是否正确。都正确可以看调用方法是否为。
2023-04-01 22:22:08 316
原创 LRU在UIImageView的extension中简单应用
方法时候根据url作为key先判断缓存里面是否存在image对象,如果有,直接显示即可,而没有的话,先走placeholder的路径,然后异步执行Session的任务,下载完后将image对象放入缓存里面,再设置image即可。,叫做“最近最久使用”。这是不可接受的,因此,自然而言地想到了使用hash字典来充当缓存。有了LRU的实现,就可以把普通的hash字典换成LRU缓存了,在设置完指定最大容量后,新的url请求过来就会把最久远未使用的image对象移除缓存,达到了动态使用、动态平衡的结果。
2023-03-04 15:12:23 552
原创 基于UIView实现UIKeyInput协议来实现输入框 TextView
之前有次需求是要求做cell内的输入框动态换行,顺便研究了一下UITextView的实现,核心是UIKeyInput协议,重写这三个方法来完成输入框。第一个方法判断是否有文字,第二个是插入文本是的回调,第三个方法是删除按钮按下时的回调。整个输入框通过来实现。
2023-03-01 21:08:12 694
原创 Xcode Archives打包上传 / 导出ipa 发布至TestFlight
Xcode自带的Archives工具可以傻瓜式上传到App Store Connect分发这里以分发到TestFlight为例进行操作。环境:Xcode 14。
2023-02-19 20:51:28 4880
原创 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 1137
原创 UITableView内输入框(UITextView)换行
因为如果在Cell的init方法里面设置UITextView的contentOffset,是只对那一时刻的UITextView生效,一旦有文字内容变换,其contentOffset又会重新计算,导致前面失效。当然,不是所有的人的业务都是相同的,设置完成后可能发现并不符合自己的业务需求,发现文字不是竖直方向的居中。UITableView内存在一个Cell,该Cell内有一输入框可以输入文字,超出输入框宽度则换行展示,即该Cell高度要增加。3:判断是否换行后更新UITableView即可。
2023-01-16 17:09:43 1856
原创 iOS: 禁用屏幕旋转功能后获取屏幕方向
项目本身支持横竖屏,但是要在特定ViewController下禁用该VC的方向,即对屏幕旋转不敏感;但又要满足能获取到当前屏幕的方向
2023-01-08 22:51:48 1025
原创 * 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 641
原创 Undefined symbols for architecture arm64
我的情况是阿里云的一键登录是老版本的,更新之后就正常使用没看更新文档,编译期间报出该错误,查看文档得知新版本需要导入Network.framework,导入后遂可编译。原因:未导入相关framework。
2022-12-11 21:35:10 649
原创 CGContextSaveGState: invalid context 0x0. If you want to see the backtrace
猜测原因: 和CG开头相关的内容肯定是和视觉相关的内容。我的问题是有一个端口进程会扫描UIWindow下所有UIView的子类,结果这个进程卡住不扫描了,仔细检查,原来是重写UIControl时忘记给frame了。解决方法:检查与视觉相关的属性,例如frame,查看是否符合条件或不为空。
2022-11-27 21:45:19 826
原创 一种子模块化的基于Hash刷新机制的iOS端数据驱动的MVVM架构思考
iOS端的架构基准无非就是苹果推荐的MVC,经典MVVM,解耦性极好的MVP,新生代的VIPER及Uber推出的Ribs,当然还有臭名昭著的CCC(所有代码都放在ViewController里面)。架构的实施标准无非就是解决软件工程中两个重要问题:如何加快软件开发速度;如何解决软件工程后期维护问题。
2022-09-04 15:50:16 1472
原创 自定义NavigationBar--使用UIView进行绘制
iOS中系统自带的UINavigationBar虽然功能强大但使用起来有各种各样的小问题,处理起来很是麻烦。当然也有一些优秀的第三方NavigationBar同样功能也很强大,使用起来更为便捷,但仍然存在的一个问题是其系基于继承自UINavigationBar的子类,因此也有诸如此类的问题如模态弹框的展示。UINavigationBar本质上是基于UIView的可以hook到UIViewController属性的特殊类,后者的hook很难做到那么前者基于UIView是可以轻易地实现的。......
2022-07-30 16:03:07 884
原创 GCD简单了解
一:基础名称GCD的创建依赖于任务与队列这两个概念。任务就是block内执行的操作,block内调用的某个方法。任务有两种方式,一为同步执行,二为异步执行。二者的区别在于是否具备开启子线程的能力,执行的任务在队列中执行的方式(顺序)。同步执行的特点同步添加任务到指定的队列中,在添加的任务执行结束之前,会一直等待,直到队列里面的任务完成之后再继续执行。只能在当前线程中执行任务,不具备开启新线程的能力。异步执行的特点:异步添加任务到指定的队列中,它不会做任何等待,可以继续执行任务。
2022-07-23 16:55:44 1111
原创 Build finished with errors/Executable Not Found
BuildPhases->CompileResources,删除有问题文件(如过文件过多可选择右上角Filter输入框直接定位有问题的文件)可能系部分文件未删除干净,例如手动从Finder删除,或选择removerefrence,导致CompileSources残留有文件索引。编译期间有Errors错误但编译通过。install时提示可执行文件未找到。...
2022-07-23 16:51:59 388
原创 OpenCV.相机使用
相机使用相机的使用依赖VideoCapture类与具体的硬件设备VideoCapture类new VideoCapture对象的时候,一个构造器为index的构造器决定了初始化时摄像头位置,0代表前置(面向用户),1代表后置。isOpened() 方法返回是否可用避免竞争资源。Java代码(JavaFX Controller层)相关图片...
2022-06-03 17:50:07 456 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 218
原创 浅析Swift中的associatedType与objc_setAssociatedObject
前言:associatedType含义:关联一个协议使之以类似泛型参数方式编译。这句话是很抽象的,简单来说,当某个接口类内的协议参数逻辑是在Runtime期间完成的,为了确保安全性以及Buildtime期间就能发现问题,可以采用关联一个协议再命名具体实现逻辑的协议方式进行。场景:设存在一个协议为SmartDeivce,负责具体智能设备的抽象协议,由此产生PadDevice与PhoneDevice。protocol SmartDevice { }class PadDevice: Sm
2022-05-31 10:44:14 798
原创 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 2788
原创 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 446
原创 @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 263
原创 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 759
原创 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 3803
原创 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 1705
原创 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 1769
原创 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 2551
原创 Swing应用程序美化--FlatLaf (IDEA风格)
前言:Swing默认主题已经无法适应现在的软件界面设计风格,第三方发行者推出的FlatLaf主题拥有很漂亮的设计风格,使用也很简单。依赖:进入如下地址:https://search.maven.org/artifact/com.formdev/flatlaf/1.6.5/jar然后选择最右侧的Download选择下载到本地为jar包。添加依赖方式与普通jar包一致。嫌手动导入麻烦的直接配置pom即可:<dependencies> <dependency>
2021-12-19 20:48:25 8606
原创 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 3094
原创 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 348
原创 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 2544
原创 OpenCV.图像直方图
图像直方图图像直方图反映的是图像的统计学特征,可大概看出其分布特征。假设某输入源为普通图像,经二值化后其显示像素值范围为0~255,其像素值经过排序后呈正常分布,那么某一像素值或某一像素范围可大概描述其像素特征。即其BIN(BIN越多,直方图对颜色的分辨率越强)取值范围越大,其空间分布越平均,越小则会有尖锐。基于此可以统计图像的BIN以此来绘制其直方图,其函数声明如下:calcHist(images, channels, mask, hist, histSize, ranges);各参数解释如下:
2021-12-07 21:20:17 745
原创 OpenCV.轮廓发现与绘制
轮廓发现与绘制一般而言,图像的轮廓都是由一系列的像素点构成,这些像素点属于二值图像的前景图像,每个轮廓都是一组点,而各组点则组成了轮廓。该方式的原理很复杂,简述即通过定义一系列的边缘点类型与拓扑集合结构类型,然后对二值图像的扫描来完成边缘类型的寻找与拓扑结构的构建,以此完成轮廓的发现。轮廓发现的函数声明如下:findContours(image, contours, hierarchy, mode, method, offset);各参数解释如下:image8单通道的输入图像。conto
2021-12-04 09:39:19 2566
原创 OpenCV.霍夫圆
霍夫圆霍夫圆的变换与霍夫直线类似,其原理较为复杂,这里暂时不以叙述。其检测实现是以灰度图像来找到候选区域,然会进行霍夫检测,以此减少算法的时间复杂度。但该方式极易受到噪声影响,对图像的噪声敏感,故先须进行噪声抑制处理。其函数声明如下:HoughCircles(image, circles, method, dp, minDist, param1, param2, minRadius, maxRadius);各参数解释如下:image8单位通道的灰度图形。circles输出的3个向量的数
2021-12-01 21:01:01 3397
原创 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 2181
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人