iOS开发
iOS开发项目实战、技术分享探讨
zhaocarbon
C、C++、ObjectiveC、swift、html、css、javascript、C#、Java、vue、jquery、uniapp、微信小程序……
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Killing app because it never posted an incoming call to the system after receiving a PushKit VoIP
前言:是在和中引入的一个新框架,旨在优化的交互体验。该框架提供了与类似的功能,允许应用程序设置为系统默认通话应用,但与CallKit不同的是,LiveCommunicationKit在锁屏状态下不会全屏弹出,也不会在中留下通话记录1。原创 2025-03-20 10:56:26 · 780 阅读 · 0 评论 -
iOS LiveCommunicationKit OC 实现
LiveCommunicationKit主要用于优化VoIP通话体验,适用于需要高质量语音通话功能的应用。类似的功能,允许应用程序设置为系统默认通话应用,但与CallKit不同的是,LiveCommunicationKit在锁屏状态下不会全屏弹出,也不会在。因为项目是OC版本的,所以进行了封装实现,目前已经实现OC版本,供大家使用。8.0.56版本就采用了LiveCommunicationKit接口,替换了原先的CallKit框架,以进一步提升语音通话体验。中引入的一个新框架,旨在优化。原创 2025-03-10 21:09:02 · 1862 阅读 · 12 评论 -
Terminating app due to uncaught exception ‘NSInternalInconsistencyException‘, reason: ‘Set `maskView
嗯,坑爹的IOS18,当你在你的UI(uiview或uiviewcontroller的子类)类中定义一个属性并初始化时就会出现崩溃!因为UIVIEW本身就有这个属性,你又定义一个!触发UIVIEW内部的断言出现崩溃!原创 2024-10-09 09:58:02 · 1084 阅读 · 2 评论 -
elselect iphone上 要点两次
。原创 2024-10-25 12:25:54 · 1345 阅读 · 0 评论 -
snowFlake OC 雪花算法 实现
注意,41 位时间截不是存储当前时间的时间截,而是存储时间截的差值(当前时间截 - 开始时间截) 得到的值,这里的的开始时间截,一般是我们的 id 生成器开始使用的时间,由我们程序来指定的(如下面程序 IdGenerator 类的。原生的 Snowflake 算法是完全依赖于时间的,如果有时钟回拨的情况发生,会生成重复的 ID,市场上的解决方案也是不少。由于 long 基本类型在 Java 中是带符号的,最高位是符号位,正数是 0,负数是 1,所以 id 一般是正数,最高位是 0。原创 2023-04-08 10:39:21 · 664 阅读 · 0 评论 -
OC RSA加密解密
OC RSA加密解密原创 2022-11-23 10:58:02 · 1518 阅读 · 0 评论 -
ERROR ITME-90205:“Invalid Bundle .The bundle at “XXXXXXXXX.framework“contains disallowed nested bund
ERROR ITME-90205:"Invalid Bundle .The bundle at "XXXXXXXXX.framework"contains disallowed nested bundERROR ITME-90206:"Invalid Bundle .The bundle at "XXXXXXXXX.framework"contains disallowed nested bundERROR ITME-90685:There is more than one bundle with原创 2022-11-04 21:57:42 · 774 阅读 · 0 评论 -
iOS16适配之 [[UIBarButtonItem alloc]initWithTitle 卡死
iOS16适配之 [[UIBarButtonItem alloc]initWithTitle 卡死原创 2022-09-26 19:30:15 · 1730 阅读 · 10 评论 -
移动端 realm数据库使用及解耦,跨线程安全使用 OC realm
最近在搞IM,因为消息量多,实时读写及并发相当的多,原项目封装使用了FMDB,但这个东西对比于并发多线程读写实在不敢恭维,动不动出现锁导致卡顿,体验极期扯蛋。虽然实现队列读写,但是还是管不住这东西的缺陷。。于是乎寻找替换方案。首先考虑了WCDB,即微信团队发布的开源数据库,但是使用起来相当的别扭,所有属性字段得一个一个的去使用他的宏去声明,工作太繁锁,相信软件及开源的初衷一定是减少开发者的代码耦合及胶水坨坨。再次考虑都查了Realm这个开源库,库本身为500多M,使用后各种崩溃,100%都是跨线程使用,虽然原创 2022-06-21 15:56:47 · 1361 阅读 · 0 评论 -
UITableViewIndex修改frame、sectionIndexTitlesForTableView位置
效果展示 :系统默认的快速定位功能位置太过靠右位置,特定情况下,我们需要调整其位置,如何做呢?请看代码:@interface UITableView (IndexViewFrame)@end#import <objc/runtime.h>@implementation UITableView (IndexViewFrame)+ (void)load{ static dispatch_once_t onceToken; dispatch..原创 2022-05-26 12:15:43 · 651 阅读 · 0 评论 -
GPUImage实现人脸实时识别
最近在研究OC的生物活检方面的实现,发现SDK中自带有相应的功能类,则进行了调研与实现。实现过程中发现一个比较坑人的一个地方,就是GPUIMAGE这个框架里面对于视频采集使用的YUV格式,而YUV格式无法与OC的类库进行配合实现实时识别。现在我们来剖析一下GPUImageVideoCamera的实现:@interface GPUImageVideoCamera : GPUImageOutput <AVCaptureVideoDataOutputSampleBufferDeleg.原创 2022-05-05 15:20:02 · 731 阅读 · 0 评论 -
OC 识别网页连接
OC 识别网页连接原创 2022-04-29 11:26:48 · 467 阅读 · 0 评论 -
OC 下载iCloud 图片和视频
在视频选择的时候遇到了一个不太容易发现的bug,产生的原因是由于手机内存小,而用户又打开了相册同步iCloud,在这时,如果本地可用内存过小,会导致将本地相册中的图片或视频删除只留缩略图,如果App调用的时候想要选取这种图片就需要从iCloud云中进行下载,才能获取原图或原视频.// get Image[[PHImageManager defaultManager] requestImageDataForAsset:asset options:nil resultHandler:^(NSData.原创 2022-04-25 11:59:44 · 718 阅读 · 0 评论 -
OC 画任意弧度的弧
CGFloat sz = MIN(self.view.bounds.size.width, self.view.bounds.size.height)/2; CGRect ft = CGRectMake((self.view.bounds.size.width-sz)/2, 120, sz, sz); UISpinnerAnimationView *c1View = [[UISpinnerAnimationView alloc] initWithFrame:ft]; [c1View.原创 2022-04-19 10:34:26 · 202 阅读 · 0 评论 -
OC 实现扫雷达扫描动画
先上效果,如下:忽略CSDN这个动画展示效果,掉帧严重,导致下面的动画不流畅。上代码:typedef NS_ENUM(NSInteger,UISpinnerAnimationViewAnimation){ UISpinnerAnimationViewAnimationSpinner,//拖尾绕圈 UISpinnerAnimationViewAnimationRador, //雷达};@interface UISpinnerAnimationView : UIVie..原创 2022-04-19 10:27:14 · 1343 阅读 · 0 评论 -
OC 环形等待UI spiner动画
看一下效果:使用方法:UISpinnerAnimationView *evi = [[UISpinnerAnimationView alloc] initWithFrame:CGRectMake((self.view.frame.size.width-160)/2, 160, 160, 160)];[self.view addSubview:evi];[evi startSpinerAnimation];源代码:@interface UISpinnerAnimationV..原创 2022-04-12 18:08:30 · 2061 阅读 · 0 评论 -
HTTP请求之GET及POST详解
GET方式:请求URL固定,所有参数均后缀在URL后面,以key=value&key1=value1&key2=value2方式拼装POST方式:1、请求URL固定,所有参数均放在http的请求报文中,即放在了body中!所有参数以json或者XML格式序列化文本串或form-data传输。2、请求URL不固定,部分参数会放在URL中,即http://domain.com/userlogin/login?sign=xxx×tamp=xxx以拼装成最终的.原创 2022-03-04 17:01:47 · 3555 阅读 · 0 评论 -
XCODE 编译慢问题优化解决
1、 项目中使用了pch导致编译慢的解决办法,通过设置Build Setting -> Precompile Prefix Header -> YES2、设计编译优化等级(????)不要再项目中或者静态库中使用-O4,因为这会让Clang链接Link Time Optimizations (LTO)使得编译更慢,通常使用-O3。注意:在设置编译优化之后,XCode断点和调试信息会不正常,所以一般静态库或者其他Target这样设置。作者:纸简书生链接:htt原创 2022-02-19 17:23:44 · 3602 阅读 · 0 评论 -
UINavigationBar 导航栏背景设置
之前使用好好的项目,导航栏配置什么的也没有啥问题,最近突然发现导航栏配置无效了,尤其是背景色调整,无论如何也显示不了了。遂进行排查,现将代码整理:核心代码为:if (@available(iOS 13.0, *)) { UINavigationBarAppearance *appperance = [[UINavigationBarAppearance alloc]init]; appperance.backgroundImage = [UIImage i原创 2022-01-05 14:16:41 · 1508 阅读 · 3 评论 -
SDWebImage URL 下载不显示图片
[self sd_setImageWithURL:url placeholderImage:image completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {if (completion) {completion(image,error,cacheType,imageURL);}}];以上是最常用的请求方法,但是有时候会发现block返回的image是空的,...原创 2021-12-30 00:11:21 · 783 阅读 · 0 评论 -
iOS语音转文字实现
iOS语音转文字实现原创 2021-12-27 11:27:55 · 4724 阅读 · 0 评论 -
OC 是否存在某个头文件 是否定义了某个头文件
OC 是否存在某个头文件 是否定义了某个头文件原创 2021-12-07 17:39:15 · 516 阅读 · 0 评论 -
SQLITE3插入、查询效率的优化方法
插入篇:1、sqlite3_exec()通常,我们使用sqlite3_exec()函数来处理数据的插入操作,该函数直接调用sql语句对数据进行插入,所以使用起来很方便,插入100w条数据for( i = 0; i < 1000000; i++){ snprintf(sqlcmd, sizeof(sqlcmd), "insert into testinfo values(%d, %d, '%d', '%s')", i, i*2, i*10, buf); sqlite3_exe...原创 2021-11-14 20:47:09 · 6794 阅读 · 0 评论 -
OC url匹配分割
NSString *cnt = @"http://baidu.com23412245254"; NSArray *ranges = [cnt mutableRangeOfString:@"((http[s]{0,1}|ftp)://[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)|(www.[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4}.原创 2021-11-12 18:14:52 · 1901 阅读 · 0 评论 -
OC iOS 解析HTML 获取HEAD 页面标题 描述 网站图标
引入第三方库:#import "TFHpple.h"NSMutableDictionary *webObj = [NSMutableDictionary dictionaryWithCapacity:0]; NSURL *url = [NSURL URLWithString:@"https://www.jd.com/"]; NSError *err = nil; NSString *cnt = [NSString stringWithContentsOfURL:url.原创 2021-11-12 12:52:57 · 2709 阅读 · 2 评论 -
UITextView显示偏移问题
UITextView使用时,左侧或者周围出现偏移问题,如下进行修正即可: [self.contentTextView.textContainer setLineFragmentPadding:.0]; [self.contentTextView.layoutManager setAllowsNonContiguousLayout:YES];原创 2021-11-12 10:48:52 · 742 阅读 · 0 评论 -
OC获取音频文件总时长
NSDictionary *dic = @{AVURLAssetPreferPreciseDurationAndTimingKey:@(YES)}; AVURLAsset *audioAsset = [AVURLAsset URLAssetWithURL:self.musicModel.contentURL options:dic]; [NSThread detachNewThreadWithBlock:^{ CMT...原创 2021-09-06 11:30:09 · 507 阅读 · 0 评论 -
UITextView 获取点击处文字索引
最近在处理这么一个页面:需求为在点击蓝色名称的时候,需要跳转到对应的用户详情页面去,这个怎么实现呢?实现思路:整体显示使用UITextView这个控件,使用富文本的方式拼接字符串。同时需要在全局数据模型中记录每一个人的名称在这个富文件字符串的位置,当点击的时候,精确获取到点击的文字索引,如果这个索引落在了这个用户的名字位置,则将用户信息带出进行业务逻辑跳转。因为富文本的拼接比较简单。下面说说具体怎么获取到UITextView精确点击位置索引:细看如下的代码:U...原创 2021-08-28 10:36:18 · 512 阅读 · 0 评论 -
UITextView 水平居中对齐
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:msg];[attr addAttribute:NSForegroundColorAttributeName value:RGB(130, 130, 130) range:NSMakeRange(0, msg.length)];[attr addAttribute:NSFontAttributeName value:SysInfoMes.原创 2021-08-28 10:25:26 · 852 阅读 · 0 评论 -
textField: shouldChangeCharactersInRange: replacementString出现圆圈数字、九宫格键盘圆圈数字、禁止输入emoji表情等
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string原创 2021-08-26 18:18:04 · 591 阅读 · 0 评论 -
iOS UIImage 马赛克 滤镜
1、方案一- (UIImage *)pixelateImage:(UIImage *)image pixelateLevel:(CGFloat)pixelateLevel{ CIFilter *filter = [CIFilter filterWithName:@"CIPixellate"]; [filter setValue:image.CIImage forKey:kCIInputImageKey]; [filter setValue:[NSNumber numberWi原创 2021-08-12 15:34:49 · 262 阅读 · 0 评论 -
OC正则 以@开头 空格结束的字符匹配
IM里面,经常会用到@所有人功能,对于@关键字要进行常亮,这就要求我们不得不快速匹配获取对应的range!以下给出参考源码:@"@[^\\s]+\\s?" NSString *textStr = @"@1111111 @24234234234 @433 @rrr @"; NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc]initWithString:textStr]; [attSt原创 2021-08-04 11:19:34 · 693 阅读 · 0 评论 -
OC 获取手机运营商信息
/** #import <CoreTelephony/CTTelephonyNetworkInfo.h> #import <CoreTelephony/CTCarrier.h> sim卡信息 */+ (NSDictionary *)getSIMCardInfo{ CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init]; CTCarrier *carrier = nil; .原创 2021-07-23 15:20:57 · 1934 阅读 · 0 评论 -
iOS网络类型、信号强度读取
最近在搞IM方面的东西,有时候想对于网络信号进行监测,以下给出源码:+ (NSInteger)signalStrength{ if(@available(iOS 13.0, *)) { return [self signalStrengthThan13]; } else { return [[self signalStrengthLess13] integerValue]; }}+ (NSInteger ).原创 2021-07-14 16:54:32 · 3247 阅读 · 15 评论 -
UISlider自定义、分段式滑动
最近又在开发一个电子书阅读器,设计师设计的UI很美观漂亮,但是无奈系统自带的滑动进度控制器太丑,不好看,不得不进行二次封装处理达到设计师的要求!下面就是系统自带的UI展示,可以看出很音调,难看!也许是苹果的设计极简主义。奈何对于产品而言,这样的展示太不符合要求,以下将对本次的开发做以记录有兴趣的同学可以参考研究。先看看实现的效果1、2、3!iconSize()是一个内联函数,其实现目的是在不同设备上输出不同的高度大小,比如一个小图标在320X640的上大小为34,而在1242X2208的设原创 2021-07-04 16:25:01 · 2276 阅读 · 2 评论 -
UIAlertController自定义、替换方案
UI交互做为与用户展示的核心内容,往往需要与设计密切相关,实际开发过程中,我们经常要用到alertview这种浸入式警告来展示一些核心内容以打断用户的操作。但是官方自带的UIAlertController自定义方面简直惨不忍睹。。。展示内容无法更加丰富,按钮样式无法高度自定义。。这些缺陷使的我们的UI开发与设计师的做法往往出现差异,使的产品不是那么完美 ,下面就给出参考实现:本实现支持MRC及ARC模式,放心使用。项目中用到的一些类的扩展,如#import "NSExtentionSloter.h"可原创 2021-06-25 16:46:00 · 2112 阅读 · 4 评论 -
OC 清空NSString 所有开头处的回车换行
有时候,我们的列表显示单行文本,而有时候,出现的数据竟然开头处出现换行符,这个时候,我们就不得不进行字符串处理,删除掉开头处所有的换行符。故实现以下方法://删除消息开头处所有的换行符,有多少清多少- (void)deleteNewlineCharacterAtBegin:(NSString **)text{ while ([*text length] > 0 && [[*text substringToIndex:1] isEqualToString:@"\n"])原创 2021-06-18 17:13:17 · 340 阅读 · 0 评论 -
iOS用户协议及隐私政策 alertview
随着苹果对于APP的规范越来越严,在app首次启动的时候,我们需要立即在默认的启动页面完成后,展示协议、隐私政策声明,而系统自带的UIAlertView明显不能够支撑我们的要求,这个时候,就必不可少的需要我们自己...原创 2021-06-10 17:13:32 · 3994 阅读 · 11 评论 -
UITextView 点击事件 点击文字
因为UITextView这个控件可以正常与HTML进行交互,有时候,当我们点击它的时候,想要跳转到某个指定页面,这个时候,点击精确到某个文字,很有必要。以下给出相关的参考代码:原创 2021-06-07 11:49:49 · 1337 阅读 · 0 评论 -
OC 性能优化
一、CPU和GPU 的介绍1.1、在屏幕成像的过程中,CPU和GPU起着至关重要的作用 CPU(Central Processing Unit,中央处理器),对象的创建和销毁、对象属性的调整、布局计算、文本的计算和排版、图片的格式转换和解码、图像的绘制(Core Graphics) GPU(Graphics Processing Unit,图形处理器),纹理的渲染,说白了就是界面的展示 CPU和GPU的机制图 在iOS中是双缓冲机制,有前帧缓存、后帧缓存 ..转载 2021-05-18 18:50:56 · 1023 阅读 · 0 评论
分享