- 博客(33)
- 收藏
- 关注
原创 【OC】为category添加weak属性
通过中间类对象持有weak属性-分类属性关联中间类对象的形式完成分类添加weak属性的功能。友友们都知道,分类当中是不能添加property的,因为运行时系统不会自动完成@synthesize,所以需要使用runtime的关联对象形式完成property。看来关联对象的assign修饰和属性一样,离开作用域之后对象销毁,assign指针成为野指针,所以我们还是要想办法完成weak修饰。有copy,有retain,还有assign,看起来足够用了。这里有几种方法,目前使用的先记录下来,有空将剩下的补全。
2024-06-21 03:41:37
513
原创 【iOS】保存PDF文件和打印功能
新的需求又来了,这次的需求是用户可以在App中打印当前页面,也可以将当前页面保存成pdf文件,以便日后打印。首先解决一下保存文件的问题,用户需要在文件管理中能查看pdf文件。iOS允许暴露给用户的只有Documents目录,暴露Documents目录只需要在info里添加两个字段Application requires iPhone environmentSupports opening documents in placeok,运行一下已经能在文件管理中看见documents的文件了。接下来处理
2020-12-14 15:29:54
1880
原创 【iOS】UICollectionView的装饰视图——decorationView
最近有一个新需求,需要给列表中每一个section单独加一个背景,如下:这……用tableview做的想法在看到这个背景的时候就没了,人也傻了。百度了一下发现UICollectionView可以实现,就是使用decorationView,不过资料还蛮少的,都是13年左右,坑也有不少,自己先按着教程摸索着整了一个,记录一下。先说一下流程:创建一个继承自UICollectionReusableView的视图,这就是我们接下来要用的decorationView装饰视图,这里我命名为XY_RM_ListVi
2020-11-19 12:24:12
1851
原创 【Macos】Mac开发——NSCollectionView
被要求开发公司产品的mac版本,无奈只能开始摸索。刚开始信心满满,结果刚上手心态就崩了。你说他和uikit一样吧,也不一样。说不一样吧,还有那么点一样的成分。按照开发iOS的思路来做,一运行全是报红……累了。一步一个坑,资料也少,几乎是查一点写一点。先简单写一下NSCollectionView的坑吧。NSCollectionView能找到的资料大部分都是使用xib创建的,由于产品ios版本就是纯代码编写的,所以在开发mac版本的时候也是首选了纯代码,这里就有坑了。最开始按照iOS的思路创建NSCol
2020-09-11 15:24:45
927
1
原创 【iOS】关于AVPlayer播放音频播放过程中突然停止的坑
项目中有一个需求,将在线音频分段播放并可以随意切换到某一段。之前的代码是当用户点击某一段时,将playitem跳转到对应的时间点,再调用player进行播放操作。不料测试突然反馈了一个问题:有些音频随机播放到第三段第四段的时候就会卡住没有声音,这时候再进行点击操作也是没有声音的。开始以为是在某个地方误进行了stop操作,player=nil才会出现这样的情况。可打了断点之后发现player并不为nil,playitem也没有任何问题,音频就这么诡异的戛然而止。后来又怀疑是网络的问题导致音频没有缓存到跳
2020-06-28 17:39:17
4315
2
原创 【iOS】内购项目审核被拒的坑
接手维护公司老项目,主要是开发新功能。之前运行正常的代码防止误伤就没有动。这周照常更新版本,提交到App Store,没想到竟然被拒,拒绝理由是内购期间无限期加载,无法查看订阅内容。一番查找发现:苹果在审查的时候,环境是release,但账号是沙盒账号。而老项目中直接判断debug环境来设置检验地址是沙盒还是正式环境,导致苹果审查时用沙盒账号走了正式环境的凭证检测地址,后续向公司服务器二次检验、解锁内购项目等等操作都没有实现。急忙将根据debug环境判断改成根据凭证判断。这种情况可以打AdHoc的包上
2020-06-21 01:51:26
2158
原创 【iOS】解决上传APPStoreConnect时卡在“Authenticating with the App Store”
今天上传应用的时候一直卡在“Authenticating with the App Store”这里,重试不行,重启不行,切换了网络状态也不行。目前普遍的三步终端解决法对我没用帮助,第二步就提示没有对应路径文件。最后发现了简单快速的解决方法。Xcode在上传时会下载一串jar包,卡在这一步很有可能就是jar包没有下载下来。删除/Users/用户名/Library/Caches/com.apple.amp.itmstransporter这个文件夹,接着在终端输入/Applications/X
2020-06-12 18:41:20
2162
原创 【iOS】储水罐波纹样式button 以及 随机路线的泡泡
话说又有这么一个需求……产品想让项目中增加一个按钮:一个点击了之后会有波纹上升的按钮。在波纹到达顶端的时候还会有三个泡泡出现,以随机的路线不同的速度漂浮到固定的一个点……好吧,你赢了。先来完成这个波纹按钮/* 正弦函数 y =Asin(ωx+φ)+C A 表示振幅,也就是使用这个变量来调整波浪的高度 ω表示周期,也就是使用这个变量来调整在屏幕内显示的波浪的数量 φ表示波浪横向的...
2020-05-01 01:28:58
216
原创 【iOS】scrollView滚动时显示 停止时隐藏的view
好的还是这么一个需求……在scrollView滑动的时候出现一个button,停止滑动两秒之后隐藏。就是这么个效果,左侧的小按钮是在滑动的时候才会显示,停止滑动两秒钟就会消失。这个协议方法是在scrollview将要开始滑动的时候才会触发,而且只有手指操作才会触发//将要开始滑动-(void)scrollViewWillBeginDragging:(UIScrollView *)scr...
2020-05-01 00:18:51
714
原创 【iOS】歌词滚动效果
产品提出了一个新需求:播放时对应文字滚动。我也不知道一个小学学习app为什么要做成音乐播放器的样式……不过人家说了就做吧……这里的数据已经做了处理,model中包含文本,起始时间和结束时间 //修改正在播放的句子 //从0开始查找,防止用户拖动进度条到最开始的位置 for (int i=0; i<self.textNewModel.allData.count; i++) {...
2020-04-30 23:53:19
763
原创 【iOS】collection刷新某一行的动画效果
项目中有一个歌词随播放滚动的效果,为了适配别的需求选择了collection完成。但在刷新对应item时发现了一个问题:collectionview不像tableview一样在刷新某一行时可以选择刷新动画,他的动画是默认从底部上升的。查了一下,这样就可以关闭掉这个动画效果。[UIView performWithoutAnimation:^{ [self.col...
2020-04-30 23:36:49
815
原创 【iOS】裁剪出环形图片并旋转制作碟片效果
工作中有一个需求,仿照各大音乐播放app做一个碟片旋转的效果。后台给的图片是正常的,裁剪边框什么的还是得自己来。终于整完了,写篇blog纪念一下。创建一个RotateView,h文件设置两个属性:Image和Rotate。image来赋值图片,rotate来控制是否旋转。//重写image的setter方法-(void)setImage:(UIImage *)image{ _...
2020-04-30 18:56:55
423
原创 【iOS】位掩码的简易使用
在写工具类,写到切圆角的时候突然对UIRectCorner这个枚举感兴趣,于是研究了一下ios中的位掩码。实际使用的是二进制运算,所以会用到&(与运算符)、|(或运算符)、~(取反运算符)以及>>、<<(移位运算符)。举例定义typedef NS_OPTIONS(NSUInteger, ZYViewFrameOption) { ZYViewFrameO...
2020-03-17 18:41:07
257
原创 【iOS】使用LaunchScreen设置图片启动页
看到了苹果发布的202年4月开始所有app必须使用LaunchScreen设置启动图,不然有被拒的风险,无奈只能开始研究首先在info.plist里面添加Launch screen interface file base name字段,值是LaunchScreen。然后Assets里面添加一个新的图片集合,如果之前使用launchImage做启动图可以直接用launchImage。如果没有的...
2020-03-16 23:25:35
4692
原创 【iOS】录音和音频合成
项目中有个分段朗读课文、朗读完成后合成一段音频播放的需求,三下五除二写完发现不少坑,记录一下。先放录音代码//录音-(void)startRecordWithPath:(NSString *)path{ //如果在录音,停止 if (_audioRecord.isRecording) { [self stopRecord]; } //创建文件保...
2020-01-14 09:41:13
1199
原创 【iOS】关于HUD的踩坑
本来项目中用的是SVProgressHUD,产品突然要求全部改成全屏进度条,于是自己写了一个进度条控件,带有label和取消按钮,写好后发现按钮点击无反应。开始以为是进度条添加时view还没有创建好,所以无反应,调换了调用顺序也不行。后来又猜测是UIWindow添加的问题,可代码中也有makeKey。最后发现是读取数据在主线程,把主线程堵塞了,开一个异步线程读取数据就ok了。...
2019-12-24 15:58:14
342
原创 【iOS】关于[NSURL URLWithStirng]取值为空
项目中有一个按钮点击有音效。之前实现功能模块的时候是有声音的,但是在拼好完整项目调试的时候发现没有声音了。 NSURL *url = [NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"paopao" ofType:@"mp3"]];这个url的值po出来是nil,刚开始以为是NSBundle取值问题,后来发现是u...
2019-12-18 18:15:32
431
原创 【iOS】封装阿里云下载网络请求
app有些数据是放在阿里云服务器上的,需要down到本地之后解压使用,大部分时间这些数据不会改变,所以需要有判断方法来判断他是否需要更新,是更新下载,还是直接读取本地.htypedef void (^downloadProgress)(int64_t totalLength, int64_t currentLength); ///<oss下载进度的blocktypedef v...
2019-11-04 09:47:35
216
原创 【iOS】颜色转化图片
//颜色转图片+(UIImage *)imageWithColor:(UIColor *)color { CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f); UIGraphicsBeginImageContext(rect.size); CGContextRef context = UIGraphicsGetCurrentC...
2019-11-01 09:48:44
705
原创 【iOS】根据尺寸和比例缩放图片
根据尺寸//根据指定尺寸缩放图片-(UIImage *)imageCompressWithSize:(CGSize)size{**// UIGraphicsBeginImageContext(size); ///<用这个失真** UIGraphicsBeginImageContextWithOptions(size, NO, 0.0); ///<用这个不...
2019-11-01 09:33:29
569
原创 【iOS】封装AVAudioPlayer
项目需要,封装了AVAudioPlayer.h//单例+(instancetype)shareManager;/** 开始播放音频 @param musicURL 获取音频的URL */- (void)startPlayWithURL:(NSURL *)musicURL;/** 开始播放音频 @param musicData 获取音频的data */-(vo...
2019-09-20 15:06:38
383
原创 【iOS】UIImageView播放gif动图
//解析gif文件数据的方法 block中会将解析的数据传递出来-(void)getGifImageWithUrk:(NSURL *)url returnData:(void(^)(NSArray<UIImage *> * imageArray, NSArray<NSNumber *>*timeArray,CGFloat totalTime, NSArray<NSN...
2019-09-20 15:02:16
1469
原创 【iOS】MD5加密
导入#import “CommonCrypto/CommonDigest.h”//MD5加密-(NSString *)md5:(NSString *)input{ const char* str = [input UTF8String]; unsigned char result[CC_MD5_DIGEST_LENGTH]; CC_MD5(str, (CC_LONG)...
2019-09-20 14:49:11
87
原创 【iOS】多语言选择
多语言选择,默认跟随系统语言,选择的时候发出通知更改控制器页面StringsHelper.h文件//定义取字符串宏给外界调用#define StringsHelperGetStringWithKeyFromTable(key,tb) [[StringsHelper shareInstance] getStringWithKey:key table:tb]#define LANGUAGEHA...
2019-09-20 14:48:43
122
原创 【iOS】封装AVPlayer
项目需求,封装了一个AVPlayer视频播放需要AVPlayer,AVPlayerLayer和AVPlayerItem,AVPlayer负责控制视频播放暂停等controller负责的事情,AVPlayerLayer只负责显示这种view需要处理的事情,而AVPlayerItem则是提供播放源。新建一个继承NSObject的类//单例类+(instancetype)shareManager...
2019-09-20 14:47:42
785
原创 【iOS】collection获取contentsize
项目中有一块需要获取collectionView的ContentSize来设置宽高,但是collectionView在reloadData之后获取contentSize是0,0。改成layout的contentsize也不行。后来发现如果想立即布局需要调用layoutIfNeeded//刷新网格 [self.mainCollection reloadData]; [self....
2019-09-20 13:42:14
1871
原创 【iOS】渐变颜色的图层
UIColor *colorOne = [UIColor colorWithRed:(255.0/255.0) green:(255.0/255.0) blue:(255.0/255.0) alpha:1.0]; UIColor *colorTwo = [UIColor colorWithRed:(255.0/255.0) green:(255.0/255.0) blue...
2019-08-23 08:33:42
165
原创 【iOS】获取本地文件地址
获取plist文件//获取文件地址NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"文件名称"ofType:@"plist"]; //读取文件NSDictionary *dictionary = [[NSDictionary alloc] initWithContentsOfFile:plistPath]; /...
2019-07-19 19:28:05
1038
原创 【iOS】GBK编码
需求有一个发送短信的功能,要求发送参数是使用gbk编码的字符串,找了许多都是错的,最终:NSString *content = @"123";//GBK编码 NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000); NSString *enc...
2019-06-12 00:10:04
853
原创 【iOS】switch下报Expected expression错误
switch突然报了Expected expression错,找了半天发现时缺少大括号。问题解决
2018-12-25 12:22:01
944
原创 【iOS】imageView裁剪图片不为圆形
imageView设置圆形时corner应该为高度的一半,但之前发现一个ImageView在显示一部分图片时并不是圆形。如下图头秃。后来随手设置了个背景颜色竟然好了。不知道为什么。等有空研究一下...
2018-12-05 17:31:33
362
原创 【iOS】播放按钮点击音效
有点击按钮产生音效的需求/** 设置签到音效 @param name 音效名称 @param soundtype 音效类型 @param playtype 播放类型 */-(void)playSoundWithName:(NSString *)name soundtype:(NSString *)soundtype playtype:(PlaySoundType)playtype{...
2018-11-21 12:28:46
1174
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人