![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS
文章平均质量分 50
sanjieshenwu1987
这个作者很懒,什么都没留下…
展开
-
【记录】NSInvocation 的使用
使用 invocationWithMethodSignature: 方法初始化一个 NSInvocation 实例1、创建签名 NSMethodSignature *signature = [[self class] instanceMethodSignatureForSelector:selector]; if (signature == nil) { signature = [self methodSignatureForSelector:selector];原创 2021-12-28 14:25:39 · 2855 阅读 · 0 评论 -
【iOS】记录widget开发流程及遇到的问题
写在前面1、iOS14后,苹果更新了扩展组件,引入了新的UI组件:WidgetKit 而舍弃了iOS14以下版本的Today Extension组件;2、WidgetExtension 使用的是新的WidgetKit不同于Today Widget,它只能使用SwiftUI进行开发,所以需要SwiftUI和Swift基础;3、Widget支持3种尺寸systemSmall (2x2)、 systemMedium (4x2)、 systemLarge(4x4)1、创建 Widget首先创建一个项目,取原创 2021-12-03 18:31:09 · 2799 阅读 · 1 评论 -
【iOS】关于keyWindow的获取
iOS13之前的获取方式UIApplication.sharedApplication.keyWindowiOS13 之后新增了UIWindowScene,keyWindow的获取也有了新的方式,将来肯定会移除该字段,记录下方法提前适配。@property(nullable, nonatomic,readonly) UIWindow *keyWindow API_DEPRECATED("Should not be used for applications that support multipl原创 2021-10-28 16:57:57 · 1422 阅读 · 0 评论 -
【iOS】深色模式适配记录
注:1、iOS13开始支持深色模式;2、xib无法适配iOS13之前的版本,只能把要设置颜色的控件连线到代码中,代码控制颜色;3、使用的 LLDark 库实现适配;原创 2021-09-27 16:04:00 · 434 阅读 · 0 评论 -
【iOS】使用WKWebView加载gif图片
WKWebView加载gif图片 NSString *path = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"gif"]; NSURL *url = [NSURL fileURLWithPath:path]; self.webView = [[WKWebView alloc] initWithFrame:webRect]; [self.webView loadRequest:[NSURLRequest request原创 2021-09-27 15:30:52 · 941 阅读 · 0 评论 -
【iOS】识别相册中的二维码
1、选择图片 UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; imagePicker.delegate = self; [viewController presentViewController:imagePicker an原创 2021-08-27 15:01:23 · 1272 阅读 · 0 评论 -
【记录】iOS上架审核被拒
Guideline 5.1.2 - Legal - Privacy - Data Use and SharingGuideline 5.1.2 - Legal - Privacy - Data Use and SharingYour app accesses user data from the device but does not have the required precautions in place.- Specifically, If your app will be transm原创 2021-06-18 15:24:30 · 1070 阅读 · 0 评论 -
【SDK】极光推送
官方文档iOS SDK 集成指南cocoapods集成 # 极光推送 pod 'JPush'添加头文件// 引入 JPush 功能所需头文件#import "JPUSHService.h"// iOS10 注册 APNs 所需头文件#ifdef NSFoundationVersionNumber_iOS_9_x_Max#import <UserNotifications/UserNotifications.h>#endif初始化- (BOOL)applicat原创 2021-06-18 15:10:45 · 350 阅读 · 0 评论 -
【问题记录】UIImageview添加遮罩后不显示图片
iPhone Xs Max 14.5预期效果图给UIImageview添加一个气泡框样式的遮罩图,使图片加载后显示为气泡框样式。原代码: //设置蒙版遮罩层通道 UIImageView *imageViewMask = [[UIImageView alloc] initWithImage:image]; imageViewMask.frame = CGRectInset(view.frame, 0.0f, 0.0f); view.layer.mask = imageViewMask.laye原创 2021-05-07 16:51:21 · 762 阅读 · 0 评论 -
【iOS】跳转App权限设置页面
跳转App设置页的方法[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];说明:UIKIT_EXTERN NSString *const UIApplicationOpenSettingsURLString API_AVAILABLE(ios(8.0));官方注释Used to create a URL that you can pass to原创 2021-03-18 11:39:10 · 2511 阅读 · 2 评论 -
【bug】[AVCaptureMetadataOutput setMetadataObjectTypes]报错
报错内容-[AVCaptureMetadataOutput setMetadataObjectTypes:] Unsupported type found - use -availableMetadataObjectTypes修改 // 原内容 // self.metadataOutput.metadataObjectTypes = @[AVMetadataObjectTypeFace]; // 修改 self.metadataOutput.metadataObjectTypes = self原创 2021-03-16 10:27:53 · 705 阅读 · 0 评论 -
对 WKWebView js交互的简单封装
WKWebView使用流程1、初始化2、监听js消息3、加载URL4、接收js消息5、移除js消息监听文末附上原代码,抛砖引玉,望指教。原项目在一个类中处理js交互的所有内容,代码量较多,所以想分离原来的类,将js内容分离出来,原来的类只处理业务逻辑。核心方法我新建了一个 NSObject 的类,来封装 WKWebView,目的是为了实现一个方法实现js消息的监听和回调。 [webView subscripTo:@"setBarTitle" messageHandler:^(WK原创 2021-03-15 16:02:04 · 539 阅读 · 0 评论 -
【记录】iOS网络缓存清理
1、URL [[NSURLCache sharedURLCache] removeAllCachedResponses];2、WKWebView NSSet *websiteDataTypes = [WKWebsiteDataStore allWebsiteDataTypes]; NSDate *date = [NSDate dateWithTimeIntervalSince1970:0]; [[WKWebsiteDataStore defaultDataStore] removeD原创 2021-03-15 09:58:54 · 301 阅读 · 0 评论 -
iOS NSDictionary 转 model
看别人的代码,看到这个方法 -setValuesForKeysWithDictionary: 。原来苹果已经提供了字典转model的方法,自己以前傻傻的一个个赋值,后来用YYModel第三方库。原生的方法还是蛮好用的。示例创建一个model类,并实现-description方法,方便打印数据。@interface AModel : BaseModel@property NSString *name;@property NSString *sex;@property NSString *info原创 2021-03-11 15:34:15 · 2957 阅读 · 0 评论 -
iOS 渐变色
CGRect frame = CGRectMake(0, 0, 100, 100); // 初始化渐变色 layer CAGradientLayer *gradient = [CAGradientLayer layer]; // 设置颜色数组 colors 是个 CGColorRef 对象数组 gradient.colors = @[(__bridge id)[UIColor redColor].CGColor, (__bridge id)[UIColor.原创 2021-03-09 16:15:05 · 1112 阅读 · 0 评论 -
【iOS】WebsocketStompKit 使用时的几处修改【记录】
1、+ STOMPFrameFromData: 方法收到的内容会被转为一些特殊符号,像乱码一样。 for (int i=0; i < [line length]; i++) { unichar c = [line characterAtIndex:i]; if (c != '\x00') { [body appendString:[NSString stringWithFormat:@"%c", c]]; } } ... ... return [[STOMPFrame原创 2021-03-04 15:12:49 · 893 阅读 · 2 评论 -
[问题记录] objc_msgsend 报错 Too many arguments to function call
Xcode 6 之前 objc_msgsend 是可以带参数的,从 Xcode 6 之后带参数会报错 Too many arguments to function call…;解决方法1、修改设置信息Build Settings -> Enable Strict Checking of objc_msgSend Calls 改为 NO。此方法在 Xcode 12 失效,即使改为 NO,模拟器不报错,真机调试报错。2、通过类型强制转换((void (*)(id, SEL, id))objc_原创 2021-03-02 15:30:30 · 531 阅读 · 0 评论 -
iOS 函数添加任意数量参数
- (NSString *)addMoreArguments:(NSString *)firstStr,...{ va_list args; va_start(args, firstStr); // scan for arguments after firstObject. // get rest of the objects until nil is found NSMutableString *allStr = [[NSMutableString allo原创 2021-02-24 15:37:32 · 236 阅读 · 0 评论 -
CocoaPods 私有库创建
总结流程和pod 指令,以及自己操作遇到的问题。参考文章1、iOS组件化 - 基础2、iOS组件化 - 项目组件化创建自己的私有库(oc)1、创建私有Spec Repo1.1 在 GitHub 上创建一个仓库作为私有库;1.2 在本地创建私有库命令 pod repo add [私有仓库名称] [GitHub HTTPS 链接地址]例: pod repo add DYDemoSpecs https://github.com/liyunxin/DYDemoSpecs.git2、创建组件原创 2021-02-22 14:12:23 · 506 阅读 · 0 评论 -
iOS 字符串转URL
1、本地文件地址转URL NSURL *url = [NSURL fileURLWithPath:urlStr];2、线上地址 // 特殊字符或者中文做转义处理 NSString * urlstr = [path stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; // 转URL NSURL *url = [NSURL URLWithString:ur原创 2021-01-16 10:48:56 · 945 阅读 · 0 评论 -
iOS 时间戳转换关于 YYYY 和 yyyy 的问题记录
先看代码 NSDate *date = [NSDate date]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; NSString *formatter = @"yyyy-MM-dd HH:mm:ss"; dateFormatter.dateFormat = formatter; NSString *time1 = [dateFormatter stringFromDate:da原创 2020-12-29 09:41:36 · 505 阅读 · 1 评论 -
iOS WebRTC 展示本地和远端视频拉伸问题
WebRTC 官网WebRTC 中文网StackOverflow/WebRTCRTC 开发者社区目录1、本地展示 AVCaptureVideoPreviewLayer,远端 RTCEAGLVideoView2、RTCCameraPreviewView 设置本地视频展示3、RTCEAGLVideoView 展示本地视频4、RTCMTLVideoView 展示本地或者远端视频为什么我不更新到新版本使用版本 GoogleWebRTC 版本 1.0,目前 CocoaPods 最新版本 1.1.31999。原创 2020-11-03 15:02:57 · 1745 阅读 · 0 评论 -
UIImagePickerControllerEditedImage 图片为 nil 的解决方案
写在前面我不清楚为什么这个为空。有的说没开摄像头权限,但是我有做摄像头权限检测,没开启摄像头权限不会走到这里,会直接返回,反复测试过。所以就直接写优化方案吧。- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { //获取照片 UIImage * orgImage = [info objectForK原创 2020-10-26 16:38:01 · 945 阅读 · 0 评论 -
记录一个扫描二维码报错问题
报错: *** -[AVCaptureMetadataOutput setMetadataObjectTypes:] Unsupported type found - use -availableMetadataObjectTypes找到报错位置 _output.metadataObjectTypes = [NSArray arrayWithObject:AVMetadataObjectTypeQRCode];这行代码应该没什么问题啊,但是个别用户会报错。查找资料修改吧。 _output.me原创 2020-10-26 16:28:30 · 1822 阅读 · 0 评论 -
iOS 10.3之后动态修改App图标(Icon)
-(void)setIconWithName:(NSString *)iconName{ //更换的图标名称,如果为nil则为原始图标名称, if (IOS_VERSION>=10.3&&[[UIApplication sharedApplication] supportsAlternateIcons]) { NSString *name = [[UIApplication sharedApplication] alternateIconName];原创 2020-10-13 10:04:47 · 590 阅读 · 0 评论 -
服务器一直收到/.well-known/apple-app-site-association报错
微信配置采用了苹果的 Universal Links 方式配置。我们的项目配置完发版后运维反馈一直收到 /.well-known/apple-app-site-association 接口报错404。以前配置的时候直接放在服务器根目录的,官方文档是这么说的Create an apple-app-site-association file that contains JSON data about the URLs that your app can handle.Upload the apple-a原创 2020-09-04 09:33:28 · 5124 阅读 · 0 评论 -
Sending ‘const NSString *__strong‘ to parameter of type ‘NSString *‘ discards qualifiers
字符串传值遇到一个警告信息,记录一下Sending 'const NSString *__strong' to parameter of type 'NSString *' discards qualifiers代码是这样写的UIKIT_EXTERN const NSString * kNetworkType;使用的时候就会报这个警告,修改为:UIKIT_EXTERN NSString * const kNetworkType;const 放在 NSString * 后面就不会有警告了。原创 2020-08-20 09:52:36 · 891 阅读 · 0 评论 -
iOS导航栏失效-没有自定义返回按钮的情况
没有自定义返回按钮,右滑返回没效果?????本来是调试某个页面右滑失效问题,结果新建了个demo,写了个push,我还什么都没做,右滑没反应。郁闷啊。。。失效原因:window,当前视图view背景色没有设置或者设置为clearColor,右滑返回就会失效,两者有一个设置了背景色,就不会失效。为什么会这样呢?抽时间查一查,有知道的请告诉我,先行谢过。记录下我要调试的项目的问题,失效原因是上一级取消了侧滑- (void)viewDidAppear:(BOOL)animated { [supe原创 2020-08-14 12:07:50 · 577 阅读 · 0 评论 -
iOS 警告消除(记录贴)
1、清除一些需要忽略的警告Targets -> Build Settings (选择All,搜索custom)-> Apple Clang - Custom Compiler Flags -> Other Warning Flags.填入要忽略的警告类型右键警告点击 Reveal in Log 查看报警类型例如: -Wdocumentation,填入内容为 -Wno-documentation,在W后面添加"no-"。参考:忽略xcode的警告方法2、Pod中的第三方库指定编原创 2020-08-11 17:53:59 · 2140 阅读 · 0 评论 -
ios-在视图上挖个洞
view背景为黑色半透明,右下角挖一个矩形显示底部图层。 _tapView = [[UIView alloc] initWithFrame:self.view.bounds]; _tapView.backgroundColor = [UIColor colorWithWhite:0 alpha:.5]; // 贝塞尔绘制区域 UIBezierPath *path = [UIBezierPath bezierPathWithRect:self.view.bo原创 2020-07-24 10:14:39 · 1026 阅读 · 0 评论 -
UIApplication 的 keyWindow
@property(nullable, nonatomic,readonly) UIWindow *keyWindow API_DEPRECATED("Should not be used for applications that support multiple scenes as it returns a key window across all connected scenes", ios(2.0, 13.0));AppDelegate.window== [[UIApplication s原创 2020-07-22 11:13:07 · 720 阅读 · 2 评论 -
标记方法弃用
方法后面添加DEPRECATED_MSG_ATTRIBUTE("Please use ...")iOS提高篇:标记弃用的方法与属性原创 2020-07-14 18:00:12 · 721 阅读 · 0 评论 -
Intel_CS_WebRTC.v4.3.1 iOS demo编译记录
Xcode:11.5SDK及demo下载地址Intel® Collaboration Suite for WebRTCiOS文档Open WebRTC Toolkit Client iOS SDK Documentation开始运行demo1、文档介绍了下载的文件包含内容,以及所需静态库动态库的说明文档说的很明白,SDK和demo包含的内容,但是libsioclient这三个静态库却没有。我又下载了4.3的版本,还好这里有2、打开demo,增删静态库动态库然后目录列表很多库不存在,全原创 2020-07-03 14:20:07 · 1185 阅读 · 0 评论 -
iOS block任意参数
block声明的时候参数不填,传值时可以传任意参数,且可以传任意个数的参数typedef void (^ViewEventsBlock)();ViewEventsBlock block1; ViewEventsBlock block2; ViewEventsBlock block3; block1 = ^{ NSLog(@"1"); }; block2 = ^(id value) { NSLog(@"2, %@原创 2020-06-23 18:46:58 · 698 阅读 · 0 评论 -
记录几个特殊的宏
_cmd 相当于@selector(当前的方法名)- (void)tapAction { NSLog(@"%@ in %@", NSStringFromSelector(_cmd), self.class);}打印tapAction in ViewController__FILE__ 文件路径__FUNCTION__ 方法__LINE__ 行号NSLog(@"%s, \n%s, \n%d", __FILE__ ,__FUNCTION__, __LINE__);打印/U原创 2020-06-23 15:30:33 · 262 阅读 · 0 评论 -
iOS给类别添加属性
通过@property声明的属性,系统会自动生成setter和getter方法,但是在类别中声明的属性系统不会自动生成这两个方法,需要手动实现这两个方法。@property (nonatomic, assign) BOOL shouldPush;利用运行时runtime处理两个方法#import <objc/runtime.h>- (BOOL)shouldPush{ NSNumber *_shouldPush = objc_getAssociatedObject(self,原创 2020-06-23 14:59:44 · 1692 阅读 · 0 评论 -
iOS UITableViewCell 高度自适应的解决方案
// 设置预加载cell高度 tableView.estimatedRowHeight = 55; // 自动适应cell高度 tableView.rowHeight = UITableViewAutomaticDimension;或者- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath{ return 55;}- (C.原创 2020-06-23 09:16:51 · 4835 阅读 · 2 评论 -
iOS禁用深色模式
设置默认不使用深色模式info.plist<key>UIUserInterfaceStyle</key> <string>Light</string>原创 2020-06-23 09:13:28 · 1242 阅读 · 0 评论 -
CocoaPods使用笔记
CocoaPods版本查看pod --version安装升级CocoaPodssudo gem install cocoapods如果报权限错误,执行以下命令sudo gem install -n /usr/local/bin cocoapods创建Podfile$ vim Podfile原创 2020-06-23 09:07:56 · 1000 阅读 · 0 评论 -
获取view的坐标最大值
在布局的时候,想要在view的左边或下边布置另一个view,可以使用CGRectGetMaxX和CGRectGetMaxY来获取第一个view的坐标,来布局另一个view的origin(原点)UIView *view = [[UIView alloc] init]; [self.view addSubview:view]; [view mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(se原创 2020-06-22 16:59:05 · 1087 阅读 · 0 评论