
转载
文章平均质量分 62
蓝清水
从事iOS行业多年的小菜鸟,希望能迈出属于自己的第一步
展开
-
iOS开发常用技术底层实现(精简概述)
类的实例方法是存储在类的methodLists中,而类方法则是存储在元类的methodLists中,因此根据上图,NSObject的元类的superclass是指向Class,当调用[NSObject foo]的时候,因为这是一个类方法调用,所以从元类中查找签名为foo的方法,没有发现,然后再沿superclass继续查找,结果在Class中查找到该方法,于是调用该方法输出。因为在MRC下,block在创建的时候,它的内存是分配在栈(stack)上的,而不是在堆(heap)上,可能被随时回收。转载 2023-08-15 17:16:43 · 831 阅读 · 0 评论 -
iOS 网络权限管理
但有时第一次安装时不出现选择网络,需要在设置中修改任意一个应用的网络权限,然后重启App,就会提示网络(目前没有找到不出现选择网络的原因);AFNetworkReachability或者Reachability来判断网络的可达性,这两个类可以判断网络是否可达,以及可达时网络的类型(WLAN还是蜂窝移动网络);CTCellularData来判断网络数据是否受限,只有应用网络权限设置为WLAN与蜂窝移动网时,网络数据才会返回不受限;注:关闭网络,及关闭无线局域网和蜂窝移动网络。转载 2022-09-15 16:59:11 · 5186 阅读 · 0 评论 -
iOS Gif图片展示N种方式(原生+第三方)
本文分享了iOS Gif图片展示N种方式,供大家参考,具体内容如下原生方法:1.UIWebView特点:加载速度略长,性能更优,播放的gif动态图更加流畅。 1 2 3 4 5 6 7 8 9 10 11 12 13 //动态展示GIF图片-WebView -(void)showGifImageWithWebView{ //读取gif图片数据 ..转载 2022-04-11 09:18:47 · 2650 阅读 · 0 评论 -
Xcode13 新建项目 Products 目录显示方法
首先打开项目,然后进入到你的项目目录并打开project.pbxproj文件1、show in Finder 找到项目在电脑上的位置2、右键点击xxx.xcodeproj -> 选择显示包内容3、右键点击project.pbxproj -> 选择Xcode等工具打开文件搜索productRefGroup 关键字搜索结果可能有多个,每个项目的键值不一样具体看自己的项目。注意看productRefGroup的注释 为/* Products */ 才是我们要修改的main转载 2022-03-09 17:29:22 · 1506 阅读 · 0 评论 -
iOS 自动构建命令——xcodebuild
想想当初天天来到公司,每天需要做一件事就是打开Xcode打包ipa,上传到fir。日复一日月复一月年复一年的做着同样的事情,作为有志成为优秀工程师的我来说,这是必须要解决的问题,所以决定自动化解决问题。简介xcodebuild 是苹果发布自动构建的工具。它在一个Xcode项目下能构建一个或者多个targets ,也能在一个workspace或者Xcode项目上构建scheme,总的来说,用它没错就是了。用法说明Tips:在终端输入man xcodebuild,可以看到Description转载 2022-02-11 15:56:52 · 5579 阅读 · 0 评论 -
OC中WKWebView与js的交互
之前用UIWebView的时候,非常的爽,用JSContext这个类就可以做想做的事,现在要改成WKWebView就比较的坑爹了(这是为什么博主要换控件的原因),因为博主需要在页面文件加载之前就把参数给到web端(js调用有返回值oc方法)。把WKWebView的所以代理方法都看了一遍,发现只有下面方式能与js交互:window.webkit.messageHandlers.<name>.postMessage();但是这个是没有返回值的,于是博主又想到了。如果让web端用这个方法来通知转载 2022-02-11 15:54:05 · 575 阅读 · 0 评论 -
iOS 阿拉伯数字转其他文字(系统自带方法数字格式化)
1. Objective-C: double testNum = 367.12459; NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; /// 拼写输出中文 formatter.numberStyle = kCFNumberFormatterSpellOutStyle; /// 如果不设置locle 跟随系统语言 formatter.locale = [[NSL转载 2022-01-07 17:04:24 · 865 阅读 · 0 评论 -
iOS-FLAnimatedImage加载Gif
iOS中有时候需要加载一些Gif动画图片,从实现方式和性能上考虑目前FLAnimatedImage比较适合.基础实现安装FLAnimatedImage第三方库,导入头文件FLAnimatedImage,加载Gif图片: self.showBgView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)]; self.showBgView.center = self.view.center; NSURL转载 2021-12-07 17:49:19 · 1115 阅读 · 0 评论 -
Xcode 13 更新了哪些内容
直接进入主题。外观对比Xcode 12,风格和显示都发生了变化:去掉了文件拓展名 图标也可以识别文件类型自动调整了 导航栏布局重新进行了分布和调整 右下角增加了光标所在行列数文件拓展名设置:打开设置 - 通用选择File Extensions:文件拓展名的显示隐藏控制,选项有三种:Hide All:隐藏全部拓展名 Show All:显示全部拓展名 Show Only:自定义显示拓展名↓↓↓↓问题提醒设置:在设置 - 通用里还多了...转载 2021-10-12 17:06:01 · 437 阅读 · 0 评论 -
iOS12 自动填充验证码实现
工作原理:当输入框成为第一响应者的时候,使用数据检测器启发式来推断传入消息携带验证码,把检测到验证码显示到QuickType Bar上,用户点击即可实现验证码填充效果如下键盘提示效果一、源码适配方式设置输入框的输入类别为UITextContentTypeOneTimeCode即可.if (@available(iOS 12.0, *)) { //Xcode 10 适配 self.codeField.textContentType = UITextC.转载 2021-09-06 14:21:58 · 4504 阅读 · 0 评论 -
iOS APP接入微信支付和分享完整流程
1.项目设置APPID商户在微信开放平台申请开发APP应用后,微信开放平台会生成APP的唯一标识APPID。在Xcode中打开项目,设置项目属性中的URL Schemes为您的APPID。如图所示。设置APPID2.导入微信支付SDK导入sdk将官方demo中的这个文件夹拷贝到项目里在APPdelegate里设置APPID导入依赖库项目中点击支付的按钮写上如下方法别忘了导入头文件和遵循代理和注册代理...转载 2021-06-03 16:38:57 · 3060 阅读 · 0 评论 -
Charles抓包使用教程
charles使用教程 将 Charles 设置成系统代理 Charles 主界面介绍 过滤网络请求 截取 iPhone 上的网络封包 截取 Https 通讯信息 模拟慢速网络 修改网络请求内容 给服务器做压力测试 修改服务器返回内容 总结 简介 Charles是在 Mac 下常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。 Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过..转载 2021-06-03 16:32:18 · 367 阅读 · 1 评论 -
iOS 获取通讯录的联系人
两种方式第一种:需要用户授权,通过代码就可以获取所有通讯录信息第二种:iOS 9.0 以后,可以无需用户授权,直接打开通讯录选择界面,单选或者多选联系人,以获取信息。一、用户授权,获取所有联系人信息1. 在 info.plist 添加授权信息image.png2. 获取用户授权申请使用通讯录,在无权限时提示用户打开权限导入 #import <Contacts/Contacts.h>- (IBAction)getMailListAction:(id)...转载 2021-05-07 18:15:38 · 2204 阅读 · 0 评论 -
iOS 12.1系统tabBar按钮偏移错位问题
现在我们使用的APP框架,大部分都是 UINavigationController + UITabBarController的模式。如果使用的是默认的UITabBar磨砂效果,而且在pushViewController时,设置了hidesBottomBarWhenPushed属性为true ,则在iOS 12.1系统,使用手势返回的时候,就会触发UITabBarButton 被设置frame.size 为 (0, 0)的错误布局, 导致的tabBar上的图标和文字偏移错位。案例extensi..转载 2021-05-07 17:57:57 · 848 阅读 · 0 评论 -
ios app 加载完启动图时黑屏一秒钟
我在appdelegate中加载首页前有个网络请求,是AFN的get请求,这个时候启动图加载完只要执行网络请求的时候就会黑屏一会才进入首页。分析了一下是网络请求阻塞了主线程,导致首页没加载出来黑屏了。怎么都觉得异步的不行呀,我觉得同步的还行,只是没有试。奇葩的需求,为什么要在appdelegate中进行网络请求呢?首先试错:问题出现可能性。1.首页的多了异步请求跟初始化的请求不知道谁最先执行(切断首页的一切请求,还是不行,取掉首页的列表的创建可以避免黑屏,带入歧途,用代码创建所有视图,试图从列表转载 2021-04-06 10:01:34 · 644 阅读 · 0 评论 -
iOS加载本地HTML的两种方式(文件、本地服务器)
第一种:以文件的形式加载HTML资源优点:最简单缺点:有些HTML中的样式不支持file:在样式和功能上有缺失作法: 1.将所有的H5文件(含html、css、js、images)都放入一个文件夹中(例如:HtmlFile) 2.将这个文件夹以相对路径的方式导入到工程代码中(例如放到Resource文件夹下) 3.获取本地的文件路径:(例如打开首页:index.html)选相对路径.png放入工程后.png/**参数1:index 是要打开...转载 2021-03-04 17:21:12 · 10386 阅读 · 1 评论 -
iOS LaunchScreen.storyboard 的使用和适配
一、苹果审核新规背景:WWDC在2019有session提出。到2020年4月,上架APP的启动页必须使用launchscreen.storyboard,不能再使用assert方式了,后面延迟到2020年6月,现在6月已过,就来说下launchscreen.storyboard的使用以及里面遇见的坑。二、使用LaunchScreen.storyboard搭建启动图1、首先,要在项目中进行配置。在General—> App Icons and Launch Images—>Launch转载 2021-03-04 17:19:37 · 3204 阅读 · 1 评论 -
iOS 原生UIActivityViewController(分享功能)
首先要说的是,为什么如此多的分享平台,可以直接集成各个平台的分享功能,还要来实现系统原生的分享功能。没办法,分享功能被微信大大禁用了,设计诱导用户分享,那就只能绕一个圈将内容分享出去,并且还不会影响现在APP的功能(分享就会得到报酬 ),UIActivityViewController就出来了,这是系统所带的原生的分享功能,在相册中我们肯定经常使用,可以将图片视频直接分享至我们需要的平台,或者保存至系统的剪切板,备忘录等。1.简单实现 NSString *textToShare = @"要分享.转载 2021-02-04 17:32:04 · 1835 阅读 · 0 评论 -
iOS 11 UINavigationItem 去除左右间隙
前言iOS 11版本由于对于Nav层级结构的改变,导致以前的方法无法达到理想的移动效果,使顶部的按钮完全靠左,或者是靠右.该修改思路目前对于iOS 11.2的系统部分情况已经无效.原因是由于从上一个vc返回到当前vc的时候,可能不会触发当前vc的viewDidLayoutSubviews方法,就算触发了此时self.navigationController.navigationBar也是空的,导致取不到需要修改约束的view,所以造成了约束无法修改为0,达不到现有效果.临时修改方法直接写一转载 2020-12-03 17:21:56 · 924 阅读 · 0 评论 -
iOS 最有可能用到的数学函数
写在前面,很基础,但是很重要要求传入的数据类型为long double,那么输出这种类型的数据要用%Lf的方式要求传入的数据类型为double,那么输出这种类型的数据要用%f的方式要求传入的数据类型为float,那么输出这种类型的数据要用lf的方式言归正传,往下看1.cbrtf()开立方根。例如27的立方根为3。float value = 27;NSLog(@"cbrtf(27)的值为%.f",cbrtf(value) );image.png2.sqrt()开平方.转载 2020-11-02 15:59:03 · 467 阅读 · 0 评论 -
WKWebView高度自适应三种方式
一、目录通过KVO的方式 通过代理的方式 通过注入JS的方式,添加网页加载完成回调获取通过KVO的方式这种方式获取的高度较为准确,但要注意表格中多次回调高度的问题。添加监听者#pragma mark ------ < Private Method > ------#pragma mark- (void)addWebViewObserver { [self.wkWebView.scrollView addObserver:self forKeyPath:@".转载 2020-09-30 17:23:39 · 4227 阅读 · 0 评论 -
iOS开发解决IQKeyboardManager失效的问题
在项目中应用了第三方IQKeyboardManager来解决键盘的问题。但是如果textField或者textView的父视图是scrollView,那么IQKeyboardManager就失效了,没有把对应的视图推上去。解决:转载 2020-08-31 15:10:36 · 4472 阅读 · 3 评论 -
iOS 文件管理
一、iOS中的沙盒机制iOS应用程序只能对自己创建的文件系统读取文件,这个独立、封闭、安全的空间,叫做沙盒。它一般存放着程序包文件(可执行文件)、图片、音频、视频、plist文件、sqlite数据库以及其他文件。每个应用程序都有自己的独立的存储空间(沙盒)一般来说应用程序之间是不可以互相访问模拟器沙盒的位置:/User/userName/Library/Application ...转载 2020-03-05 17:15:35 · 754 阅读 · 0 评论 -
iOS优化APP启动时间
1. load dylibs image通常的,一个App需要加载100到400个dylibs, 但是其中的系统库被优化,可以很快的加载。 针对这一步骤的优化有:1.减少非系统库的依赖2.合并非系统库3.使用静态资源,比如把代码加入主程序2. rebase/bind优化该阶段的关键在于减少__DATA segment中的指针数量。我们可以优化的点有:1.减少Objc类数量,...转载 2020-02-03 22:02:26 · 641 阅读 · 0 评论 -
ios上架经验总结
当你阅读过大量Apple官方发来的邮件或是说明文档、说明网页时,你会由衷地感觉通篇所说的基本都是些完全正确但又毫无意义的东西,根据业内一位资深朋友所述,一切Apple官方文档和邮件的开头内容你都可以理解为:亲爱的开发者您好,我是你爸。为什么这么说呢,其实很简单,Apple是一家十分严谨并且严格的公司,一切解释权归他们所有,不得有任何疑义。言归正传,我们来说审核条例的事情。由于Apple的...转载 2019-12-04 01:28:44 · 532 阅读 · 0 评论 -
iOS开发高级分享 - iOS 13 中的新框架 — MetriKit
MetriKit是iOS 13中用于收集和处理电池和性能指标的新框架。这是在WWDC今年与XCTestMetrics和Xcode Metrics组织者一起,作为一项协调一致的努力的一部分,为开发人员带来关于他们的应用程序在该领域的表现的新见解。苹果会自动从AppStore上安装的应用程序中收集度量指标。您可以在Xcode 11中通过打开组织者(⌥ ⌘ ⇧ o)并选择新的Metrics选项卡...转载 2019-11-03 23:28:19 · 703 阅读 · 0 评论 -
swift4.0语法杂记
原文地址:https://www.jianshu.com/p/06b9ddf748f7 (如有侵权,请联系我删除。)小视频001--swift简史小视频002--Playground体验003--常量&变量一、swift简史1、介绍 swift是苹果公司于2014年推出用于撰写OS和iOS应用程序的语言。它由苹果开发者工具部门总监“克里斯.拉特纳”在2010...转载 2019-01-03 17:20:24 · 703 阅读 · 0 评论 -
解读 MJRefresh 框架
MJRefresh 是 OC 语言里面算是一款比较通用的刷新框架了,可以用于 UITableView 和 UICollectionView 的刷新,从而可以很方便的完成下拉刷新和上拉加载更多。而且可定制程度也很高。最近需要在公司的项目上加入一个刷新的特效,而公司项目用的刷新框架是 MJefresh ,所以在完成需求的同时就顺便把 MJRefresh 框架的源码给看了一遍。然后写下这篇文章总结一...转载 2019-01-28 17:49:55 · 1433 阅读 · 0 评论 -
iOS-Cordova集成开发,已有项目集成cordova
项目组准备开发一个APP,要求Android和iOS端页面完全一致,除了一个页面跟业务相关的不同,其他界面基本一致,因此,萌生一个想法,关于webAPP的想法。于是乎苦逼的我们开始调研可行性以及整体的方案流程。为了达到除了业务数据页面用web,其他页面全是原生APP的作用。其中,关于业务的web页面需要调用原生的相机,相册,地理位置,麦克风,扬声器,扫描二维码等一系列功能,这就涉及到js与原生交互...转载 2019-03-03 23:39:36 · 2797 阅读 · 0 评论 -
CocoaPods私有仓库搭建
一. CocoaPods公共仓库查看CocoaPods 本地目录打开finder command + shift + g ~/.cocoapodsmaster是CocoaPos对应的公共git仓库 mySpecs是自己创建的私有仓库地址,后文会提到。cd 到 master目录$ cd ~/.cocoapods/repos/master$ git remote -v打...转载 2019-04-28 18:06:13 · 1267 阅读 · 0 评论 -
关于常用第三方统计平台比较
前言为什么要做数据分析?可以有效避免自己想当然的做事情,用客观数据分析出来的结果来堵住主观臆想的黑洞 可以为决策提供有说服力的支撑 可以看到决策之后的效果和问题并为下次决策提供方向 可以更好的改进产品,提升用户体验常用的第三方统计平台优缺点分析1.友盟+2010年4月在北京成立,是中国最专业、最有数据凝聚力的移动开发者服务平台。 2013年4月,被阿里收购。 第...转载 2019-06-04 01:44:40 · 7208 阅读 · 0 评论 -
SpriteKit 学习体会贴(不断完善中)
1. 关于 SKShapeNode刚接触SpriteKit时,看到这个类,以为它会比SKSpriteNode更为轻量级,但其实不是:Shape nodes are useful for content that cannot be easily decomposed into simple textured sprites. Shape nodes are also very us...转载 2019-06-04 01:47:15 · 215 阅读 · 0 评论 -
iOS金融App产品上架心得分享
最近一直在忙上架App,今天抽个空写一篇这段时间我上架金融产品App到iOSAppStore的历程经验和上架被拒解决的方法!相信大家最近也都在为金融产品上架的事情头条。确实现阶段上马甲包的监管越来越严了。从以前用个人开发者账号就能去上传到现在需要找人借用配套的金融开发者账号和相关资质才能上线。那么为什么从2018年初开始苹果审核组对于上架的监管会越来越严呢?我印象比较深刻的是有两个比较重要...转载 2019-07-03 09:28:29 · 1291 阅读 · 0 评论 -
iOS AppStore 转让APP
转让APP有一个条件,项目上线之后才可以转让一 打开iTunes Connect 登陆from 账户 就是要转出的哪一个账户点击进入要转出的那款APP 我们可以看到 在APP 信息 已经上线的APP是这样子的屏幕快照 2016-02-15 11.18.25.png而提交中的APP是没有这个选项的屏幕快照 2016-02-22 11.08.34.png点击转让屏...转载 2019-09-03 21:34:11 · 837 阅读 · 0 评论 -
使用Cocoapods创建私有库
为什么要进行代码抽离很多公司不止有一个产品,当项目达到两个及以上的时候,就需要考虑代码的共用(理想情况下)。由于我们公司特殊情况(懒),原来做项目的时候没有考虑这么多,由于公司新项目与原来的项目有大量功能相似,当时我们就采用了创建新分支的形式创建了新项目,导致代码耦合性非常强,平常开发中遇到很多问题,比如: 有些代码可能这个项目需要,那个项目不需要 分支切换太过频繁 ...转载 2018-12-03 15:15:19 · 403 阅读 · 0 评论