iOS开发小技巧
蓝清水
从事iOS行业多年的小菜鸟,希望能迈出属于自己的第一步
展开
-
iOS 系统相机拍照后图片无法拖拽问题的解决
问题:使用系统相机拍照,并允许编辑allowsEditing = YES,但在图片编辑界面只可以对图片进行缩放却无法拖拽。该方法是对系统自带的BUG做出适配性调整。但由于iOS12原创 2022-12-05 15:22:58 · 1093 阅读 · 0 评论 -
iOS 静态库和动态库打包framework流程(纯swift版/swift、OC混编版)
打包SDK静态库转载 2022-11-03 17:33:10 · 1295 阅读 · 0 评论 -
iOS 添加WKWebView导致控制器无法释放的问题
使用 添加了下面这行代码之后ViewController就会调用dealloc方法,此时ViewController已经正常释放。但是WeakScriptMessageDelegate没有释放,需要在dealloc中将WeakScriptMessageDelegate释放掉。在WkWebView与JavaScript交互中,经常会在原生中注入MessageHandler,app中注入MessageHandler的方法。这里我们发现在向JS中注入handler的时候强引用了self,最终导致内存泄漏。原创 2022-10-14 16:38:30 · 667 阅读 · 0 评论 -
iOS开发中实现广告页的思路
广告页,XHLaunchAd原创 2022-08-17 09:54:29 · 512 阅读 · 0 评论 -
苹果审核规则5.1.1(v)
5.1.1(v)原创 2022-07-08 17:27:27 · 3179 阅读 · 0 评论 -
如何修改UIImagePickerViewController的导航栏背景颜色及取消按钮颜色
如题所示,最近,项目里面需要我对系统自带的UIImagePickerViewController选择图片控制器的导航栏做个性化的定义。查找了一下,发现网上部分方法通常为全局修改,并不适合我这个案例。避免了全局统一修改,只针对UIImagePickerViewController这个类别的控制器。特此记录下有效代码。...原创 2022-06-08 17:30:08 · 934 阅读 · 0 评论 -
iOS11上tableview添加背景图片,要求图片跟随tableview滚动
最近适配iOS11 遇到一个很奇怪的问题。tableview添加背景图片,要求图片跟随tableview滚动。(非headerview图片)iOS11以下的版本都是insertSubview : atindex:0 。直接插入到index0的层级就好了。但iOS11上无论怎么插入都会在tableview最上层,遮挡tableview的显示内容。设置tableview的backgroundView能正确显示。但是图片不能滚动。然后将图片插入backgroundView的上面,依然不行。图片依然被添加原创 2022-05-10 22:50:52 · 1272 阅读 · 0 评论 -
[mac 升级10.15 macOS Catalina引起cocoapods使用失败]
报错信息如下zsh: /usr/local/bin/pod: bad interpreter: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby: no such file or directory尝试升级cocoapods解决,升级步骤如下更新gemsudo gem update --system升级cocoapodssudo gem install -n /usr/local/bin coco原创 2022-03-09 17:32:39 · 292 阅读 · 0 评论 -
iOS非金额两位小数转化为大写中文
最近APP中出现该需求,所以自己开发了一下相关方法,具体代码如下,按需自取。-(NSString *)changetochinese:(NSString *)numstr{ double numberals=[numstr doubleValue]; NSArray *numberchar = @[@"零",@"壹",@"贰",@"叁",@"肆",@"伍",@"陆",@"柒",@"捌",@"玖"]; NSArray *inunitchar = @[@"",@"拾",@"佰",原创 2022-01-07 17:09:40 · 1391 阅读 · 0 评论 -
在启动页后添加本地gif图
最近公司需要实现这个功能,给客户展示炫酷的GIF图以留下第一印象。故此,以FLAnimatedImageView为基础框架,封装了一个启动页GIF动图框架。+(void)load{ [self shareLaunch];}+(RBGifLaunch *)shareLaunch{ static RBGifLaunch *instance = nil; static dispatch_once_t oneToken; dispatch_once(&oneT原创 2021-12-07 17:47:31 · 470 阅读 · 0 评论 -
图文可编排的跑马灯效果
近日,实现公司要求,完成可编排跑马灯效果。因此,初步实现需求。下述为主要代码#import <UIKit/UIKit.h>NS_ASSUME_NONNULL_BEGIN@protocol RPLoopQueueViewDelegate <NSObject>@optional-(void)didClickArrayBtn:(UIButton *)sender;@end@interface RPLoopQueueView : UIView@prope原创 2021-11-08 09:48:40 · 142 阅读 · 0 评论 -
关于UIScrollView的精度问题
最近有个需求,要实现跑马灯效果,初步设想使用UIScrollView,然后用定时器,不断的设置contentOffset;但是发现时间,显示contentOffset的Y值总是与想象中的距离有误差。然后发现在不同的机型下scrollView的contentOffset都是有最小精度值的,这可以通过scrollView的代理,打印当前contentOffset获得。iphone6,7等下面精度值是1/2 pt;iphone7P,8P,X等机型下面精度值是1/3pt;在iphone6下面比如设置c原创 2021-11-05 17:29:39 · 259 阅读 · 0 评论 -
IOS自定义悬浮按钮
最近弄个小项目,又用到这效果,翻了下以前的代码来用,觉得有点意思,顺便放出来供大家参考,好像是2015年的时候,某些大公司,如“京东”在APP的首页上弄了个漂浮的图标,当时我在的公司也立马跟着弄一个,类似这样的模仿行为我已经习惯了!就是在界面上弄一个漂浮的按钮,能移动和点击响应,也不是随便漂和移,要吸附在左右两边,这个效果大概如下图:先上代码#import <UIKit/UIKit.h> @interface KADDragImageView : UIImageV.原创 2021-10-12 17:26:48 · 494 阅读 · 0 评论 -
提前做好iOS15适配准备
一、导航的毛玻璃效果在iOS15中,UINavigationBar默认是透明的,有滑动时会逐渐变为模糊效果,可以通过改变scrollEdgeAppearance属性直接变为模糊效果if (@available(iOS 15.0, *)){ UINavigationBarAppearance *appearance = [[UINavigationBarAppearance alloc] init]; appearance.backgroundEffect = [UI...原创 2021-09-06 15:54:18 · 537 阅读 · 0 评论 -
iOS12 自动填充验证码实现
工作原理:当输入框成为第一响应者的时候,使用数据检测器启发式来推断传入消息携带验证码,把检测到验证码显示到QuickType Bar上,用户点击即可实现验证码填充效果如下键盘提示效果一、源码适配方式设置输入框的输入类别为UITextContentTypeOneTimeCode即可.if (@available(iOS 12.0, *)) { //Xcode 10 适配 self.codeField.textContentType = UITextC.转载 2021-09-06 14:21:58 · 4185 阅读 · 0 评论 -
关于设置statusBar状态栏颜色无效
最近,本人在于做指纹、面容ID登录时发现,从登录页直接改变window的rootViewController到首页时,一切关于statusBar 的设置正常工作。但是从登录页modal出来的指纹登录页,直接改变rootViewController到首页的时候,statusBar相关代码就不能正常工作了。尝试过多种方法,包括在viewWillAppear方法,preferStatusBarStyle等方法,都无效果。最终,直接在如下实现-(void)viewDidAppear:(BOOL)ani原创 2021-08-05 18:06:48 · 1081 阅读 · 0 评论 -
关于UINavigationController设置titleView颜色无效
最近,本人遇到了一个奇怪的问题,对于一个UINavigationController下页面的导航栏,死活改变不了titleView相关颜色属性。无论是setTitleTextAttributes还是直接设置titleView代替,都不能更改成功。但是导航栏背景颜色确可以更改成功,说明部分代码有起作用。下图为我的代码的层级结构。根据情况,找寻了半天,最终发现其原因如下:只有在push进导航器的vc或者是作为导航器rootViewController的vc才能够修改titleView.由于ta.原创 2021-08-05 17:58:08 · 391 阅读 · 0 评论 -
Message from debugger: Terminated due to signal 6
最近接手项目,一打开,直接报错,错误信息如题所示。首先,我们就要了解,啥是signal 6?通过查找源码,找到系统signal.h里面的内容接着,我们需要了解,啥是SIGABRT?SIGABRT代表SIGNAL ABORT(中止信号)abnormal termination condition, as is e.g. initiated by abort() 通常由于异常引起的中断信号,异常发生时系统会调用abort()函数发出该信号 iOS平台,一种是由于方法调用错误(调用了不原创 2021-07-06 15:46:23 · 3156 阅读 · 0 评论 -
Framework Embedded Error
最近接手新项目,发现里面有两个framework报如下错误。error: Building for iOS Simulator, but the linked and embedded framework '***.framework' was built for iOS + iOS Simulator.修改项目配置里面的Validate Workspace为Yes,正常编译成功!再次修改回NO,也会正常编译!https://xcodebuildsettings.com 配置说明文档..原创 2021-07-06 14:46:25 · 1307 阅读 · 0 评论 -
IOS 改变导航栏颜色
替换系统自带的返回箭头 UIImage *image = [[UIImage imageNamed:@"leftCancelWhite"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain ta.原创 2021-04-06 09:31:48 · 3241 阅读 · 0 评论 -
如何复制粘贴到系统粘贴板
UIPasteboard类有3个初始化方法,如下://获取系统级别的剪切板+ (UIPasteboard*)generalPasteboard;//获取一个自定义的剪切板 name参数为此剪切板的名称 create参数用于设置当这个剪切板不存在时 是否进行创建+ (nullableUIPasteboard*)pasteboardWithName:(NSString*)pasteboardName create:(BOOL)create;//获取一个应用内可用的剪切板+ (UIPasteboard*)pa原创 2021-02-04 17:22:21 · 554 阅读 · 0 评论 -
如何简单实现加载全屏图片不拉伸
网上多为resize拉伸,这个可以用于不太精细的图片的满屏显示。但是对于启动页或者闪屏页这种各个细节都不一致的满屏图片,就不太适用了。解决方法还是比较简单,就是让美工同时制作两张不同比例的图片,分别对应非刘海屏和刘海屏的。让不同尺寸的屏幕分别显示不同比例的图片即可。附上两者的比例尺非全面屏的宽高比约为:0.562全面屏的宽高比约为: 0.462祝大家新年码运亨通。...原创 2021-01-07 18:07:01 · 730 阅读 · 0 评论 -
关于动态添加tabbarcontroller的子控制器
实现的思路如下:1.先是接口提前请求,结果异步缓存。2.生成tabbarcontroller的时候,把固定的子控制器提前加载,以通知或者block方法把要添加的子控制器传入。3.以原有控制器数组为准,遍历排序,找到适当的位置insert进去,然后重置tabbarcontroller整个数组,整个过程要注意异步主线程进行。4.注意再次刷新接口的时候,只做排序操作,注意不要重复添加。以下附上关键代码:-(void)insertChildControllerWithModel:(N.原创 2021-01-07 17:58:39 · 704 阅读 · 0 评论 -
关于IOS11以后的导航栏高度调整
在IOS11以后,系统已经禁止了直接改变导航栏高度的语句了。就是说,UINavigationBar *navigationBar = [[self navigationController] navigationBar];CGRect frame = [navigationBar frame];frame.size.height = 82.0f;[navigationBar setFrame:frame];这个方法已经行不通了。这时候。摆在我们面前,只有两个方法:1.我们只能隐藏掉系原创 2020-12-03 17:19:40 · 2338 阅读 · 0 评论 -
IOS14适配的细节点
IOS14版本更新已经有一段时间了。由于我们新版本更新内容较多,发版有所延迟,所以关于IOS14的适配相关细节问题,我就较晚更新了。抱歉抱歉。其他方面,在别人的文章也总结的不少了,在这里我就不再重复。我以下就总结一下别人没有提及适配细节吧。首先,日期选择器的样式增加了。而默认值,从pickerview变成了一个点击再展开的选择框。如下图所示:...原创 2020-11-02 14:58:32 · 602 阅读 · 1 评论 -
iOS关于应用出现未验证应用的解决方法
iOS应用出现未验证应用的问题排查: 是否升级1.8.6以及以上版本sdk,没有需要先升级。 iOS SDK接入 如果1满足,是否正确接入了SDK,需要满足: 授权登录没有二次弹框确认 分享除首次外不会二跳 OpenSDK自检函数所有步骤检测通过 a、b、c都要满足。没有正确接入的话,先排查问题,修复。 如果1,2满足,确认你正确接入SDK的时间。未验证应用名单非实时更新,前一天有接入新SDK(1.8.6...原创 2020-08-31 15:00:33 · 5596 阅读 · 0 评论 -
iOS开发小技巧(二)
1.UIView中支持动画的属性有frame,bounds,center,transform,alpha。2.自动缩放掩码autoresizingMask试图的上下左右边界和宽高当父视图变化时,与父视图按比例变化。3.UIView的不同contentMode,放大或缩小图片的frame时,略有差异。4.view.clipsToBounds = YES;父视图该属性设置成YES,子视图超过父视图的部分将显示不出来,这样可以防止超出部分,不响应事件造成不必要的麻烦。...原创 2020-07-31 17:34:52 · 162 阅读 · 0 评论 -
iOS 如何将NSString类型字符串 写入本地文件
+ (void)saveString:(NSString *)str { NSString *homeDir = NSHomeDirectory(); NSLog(@"homeDir = %@",homeDir); //在某个范围内搜索文件夹的路径. //directory:获取哪个文件夹 //domainMask:在哪个路径下搜索 //...原创 2020-03-05 16:10:11 · 2038 阅读 · 0 评论 -
iOS 开发小技巧总结(一)
一、导出APP对应的沙盒文件(这里只有使用真机运行的APP才可导出) 该方法可用于开发过程中,处理视频、图片、配置文件等存储数据出现问题时,导出沙盒进行直观分析(可通过配合断点调试,对比代码执行前后目录存储的变化);同时,在代码中使用NSUserDefault 保存的数据,也可在沙盒包内容中的“AppData/Library/Preferences/” 目录下对应的“包名.pl...原创 2020-02-03 21:50:49 · 556 阅读 · 0 评论 -
小技巧:如何让(非密码)输入框键盘为系统自带键盘?
如题所述。IOS开发中,当textField的secureTextEntry属性为YES的时候,系统就会弹出指定类型的系统键盘,且不可切换到其他类型。但不符合我们开发要求,所以我们利用该特质,去实现我们的功能。首先,我们需要把textField的secureTextEntry属性设为YES。随后,监听一下UIKeyboardWillShowNotification通知,在拉起的瞬间,把te...原创 2019-11-03 11:46:07 · 361 阅读 · 0 评论 -
关于UISlider动画速度问题
如图所示,这个问题困扰了我很久,原因就在于IOS系统自带的UISlider的动画代码只有一句:[slider setValue:xx animated:YES];//duration depends on distance就是说,自带的动画方法并不能自定义动画时长,只能由距离所决定,而且动画效果一闪而过。而我们的需求呢,就想要动画效果慢点,动作顺滑。在不自定义的情况下,我开始寻找其他方法...原创 2019-03-03 23:37:26 · 1014 阅读 · 0 评论 -
关于tableView实现竖排侧滑按钮按钮
由于业务需求,产品需要我们开发一个tableView侧滑出现竖排按钮的功能,具体示意图如下:于是,参考前人经验,写下了框架。地址:https://github.com/lrbtony/YPCellSwipe.git 总结:1.需要继承对应的类,通过代理方法去实现点击反馈。2.本方法核心思想是,通过遍历系统控件,获得对应的子控件,然后进行替换,并通过代理,实现控件点击反馈。...原创 2018-12-03 14:42:59 · 190 阅读 · 0 评论 -
浅谈一下HealthKit框架使用注意点
日常我们都会接触到上传步数参加各种APP的活动,来赢取虚拟货币或者实物奖品。于是我对此发生了浓厚的兴趣,决定对APP获取步数的原理进行研究。 简单说一下什么是HealthKit。就是苹果在IOS8系统以后用来生成、存储、查询各种健康数据的一个API,包括iPhone本身创建的健身数据,或者第三方app创建的健康数据,都可以通过这个API进行读取和查询。也可以把HealthKit看...原创 2018-11-02 17:53:07 · 1593 阅读 · 0 评论 -
关于遮罩层的实现方法之一
因为项目用到了遮罩功能,所以自己研究了一番,决定用CAShapeLayer来实现效果。 CAShapeLayer是用来接受矢量Path,直接使用GPU来进行渲染的特殊图层。看下面效果:对应代码: 1 2 3 4 5 6 7 8 9 let markLayer = CAShapeLayer...原创 2018-10-31 17:24:46 · 508 阅读 · 0 评论 -
模仿系统日历添加事件提醒功能
如题所示,因为最近项目开发将要用到,所以提前开发个example为后续工作顺利展开而打基础。功能还在完善中。目前项目已经上传到GitHub了,地址是:https://github.com/lrbtony/CalendarAndEvent站在巨人肩膀开发,只是作为功能整合,谢谢大大的辅助,参考地址如下:https://github.com/lfny2580832/NYDateTimePick...原创 2018-09-30 16:55:57 · 3538 阅读 · 0 评论 -
一个动画作为启动页的example
如题所示,看到对应APP实现了该功能,就自己写了一个,当做练习。作品已经上传到GITHUB,地址是:https://github.com/lrbtony/Mp4Launch欢迎大家下载,讨论和学习都是极好的。...原创 2018-09-30 15:56:31 · 367 阅读 · 0 评论 -
关于UITextField键盘收起问题
最近,我在项目中遇到了这样的情况。情景还原:页面中有两个UITextField,其中textFieldA 需要点击弹出键盘,输入数据。因为要实时监听这个TextField的输入变化,所以我添加了[_textFieldA addTarget:self action:@selector(textFieldDidChangeForA:)forControlEvents:UIControlE...原创 2019-04-01 16:30:33 · 1029 阅读 · 0 评论 -
如何让输入框光标隐藏?
如题所示。最近发现有个奇怪的现象,就是我在代码中,已经执行了如下方法 //1.视图取消编辑态 [self.view endEditing:YES]; //2.输入框取消第一响应 if ([self.textView canResignFirstResponder]) { [self.textView resignFirstResponder];...原创 2019-04-01 16:34:12 · 1472 阅读 · 0 评论 -
关于消息推送提醒功能参考和实践
消息推送提醒在现今的各个App中几乎无处不在,特别是内容的更新日渐频繁,大量的小红点被投放在各个业务入口。一般来说,小红点主要有三个应用场景:App有新添加的功能提醒用户使用 某一个已有的模块有功能上的更新 功能有内容的变化或业务上的提醒常见的比如下图所示的QQ消息提示(红点为消息数目的提示), 朋友圈的新回复,店铺上架新品,最新优惠活动提醒等等。思路分析通常情况下,小红点不...原创 2019-04-28 18:00:26 · 1329 阅读 · 0 评论 -
滑动tableview搜索栏置顶动画效果
近日,根据老大要求,需要实现对应的动画效果tableview滑动时,搜索栏渐变置顶上网找了一下,并没有对应现成的DEMO。所以决定自己开发关键点代码在于如下:- (void)scrollViewDidScroll:(UIScrollView *)scrollView{ UIColor * color = [UIColor colorWithHexString:...原创 2019-08-05 00:36:31 · 1047 阅读 · 0 评论