![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS
文章平均质量分 58
王 哪跑!!!
分享技术所想,分享技术所用,分享技术所感
展开
-
iOS 计算UILabel的宽度(定高)和高度(定宽)
当计算UILabel高度的时候,我们要定死宽度,下面是计算高度的方法/**根据宽度求高度@param text 计算的内容@param width 计算的宽度@param font font字体大小@return 放回label的高度*/+ (CGFloat)getLabelHeightWithText:(NSString *)text width...原创 2018-09-12 08:27:27 · 4240 阅读 · 1 评论 -
iOS Swift UI 绘制第一个UI界面
Swift UI 简介苹果开发者大会 WWDC 2019 在北京时间今天凌晨开幕,对于开发者来说最吸引人的就是新发布的 SwiftUI ,在 苹果公司软件工程高级副总裁Craig Federighi的演示中,我们可以轻松地把一百行的前端代码缩减到十几行。Swift UI 特点1、省略了很多逗号,return,中括号等,声明式编程2、出现了 很多关键词 例如 Some 等3、终于使用 Flex Box 布局了4、出现了 PreviewProvider 类似 安卓的xml 提供预览数据5、支原创 2021-10-09 10:12:34 · 2063 阅读 · 0 评论 -
iOS 15提示“此App的开发者需要更新APP以在此IOS版本上正常工作”
https://www.icode9.com/content-4-1027049.html原创 2021-09-23 10:32:29 · 39119 阅读 · 2 评论 -
iOS View添加四周阴影
在开发过程中,给一个View添加阴影效果可能会经常遇到,那我们如何实现一个简单的阴影效果呢?代码如下:/// 添加四边阴影效果+ (void)addShadowToView:(UIView*)shadowView{ shadowView.layer.masksToBounds = NO; shadowView.backgroundColor = [UIColor whiteColor]; shadowView.layer.shadowColor = [UIC原创 2021-06-02 10:10:10 · 1889 阅读 · 0 评论 -
iOS 常用的保存图片的两个方法
第一种、就是保存到系统相册中,这个也是最简单的,当然用户想要访问系统相册也是需要权限的,需要用户同意。在Plist文件加入下面的键值对就可以了key : Privacy - Photo Library Usage Description value:字符串即可(例如:需要使用手机相册)加入完成以后就是保存图片的方法#pragma mark -- <保存到相册...原创 2018-11-07 15:24:32 · 1118 阅读 · 0 评论 -
iOS Swift RxSwift-结合操作符(七)
今天我们继续讲解RxSwift中结合操作符的使用。结合操作符一共包含了六种,分别是startWith、merge、zip、combineLatest、withLatestFrom和switchLatest1、startWith它的作用就是会在 Observable 序列开始之前插入一些事件元素。即发出事件消息之前,会先发出这些预先插入的事件消息。代码如下: func startWith() { // 该方法会在 Observable 序列开始之前插入一些事件.原创 2021-05-07 13:36:56 · 447 阅读 · 0 评论 -
iOS Swift RxSwift-条件和布尔操作符(六)
上篇我们讲解的RxSwift-变化操作符,那么我们今天讲解一下RxSwift-条件和布尔操作符。条件操作符一共是五种,分别是Amd、TakeWhile、TakeUntil、SkipWhile、SkipUntil第一种、Amd当传入多个 Observables 到 amb 操作符时,它将取第一个发出元素或产生事件的 Observable,然后只发出它的元素。并忽略掉其他的 Observables。使用如下:func RxSwiftAmd() { // 当传入多个原创 2021-04-27 20:37:32 · 422 阅读 · 0 评论 -
iOS Swfit RxSwift-变化操作符(五)
从本篇开始开始讲解RxSwift的一些操作符(变化操作符、条件和布尔操作符、结合操作符等)。今天我们主要讲解的就是变化操作符变化操作符主要包括了8种,分别是Buffer、Window、Map、FlatMap、FlatMapLatest、ConcatMap、Scan、GroupBy下面我们开始讲解每一个操作符的使用。1、BufferBuffer 本称为缓冲集合,可以设置制定时间、缓存多少数据,然后发出数据,当然如果不够的也会发出数据。举个例子: func RxSwiftB.原创 2021-04-23 13:22:29 · 486 阅读 · 0 评论 -
iOS Swift 获取当前时间等一些常用的方法(时间管理类)
今天主要记录一下Swift中关于获取时间的一些常用方法,废话不多说,直接上代码首先定一个一个枚举为RowValue类型,主要设置时间格式类型"YYYY-MM-dd"等,时间格式可以设置很多种,这里就先写着这几种,不满足需要在添加即可/// 时间类型RowValueenum TimeFormat:String { case YYYYMMDD = "YYYY-MM-dd" case YYYYMMDDHH = "YYYY-MM-dd HH" case YYYYMMDDHHM.原创 2021-04-19 17:13:09 · 7592 阅读 · 2 评论 -
iOS 分割输入验证码的视觉效果
通常情况下,在用户注册或者登录的时候我们会用到手机验证码,而有时就会需要,分割输入验证码的视觉效果。那这种情况,我们怎么实现呢?在网上查了很多,好多都只是给了实现代码,给的东西都不是很详细,粘贴过来,有好多值不知道是从哪里来的,还有的就是需要第三方,但是第三方代码量就太多了,会使程序变大,虽然影响不大,但是完全没有必要下面时我结合网上和自己实现代码,下面配有demo下载链接先看原创 2018-01-26 15:22:56 · 2168 阅读 · 0 评论 -
iOS 文件下载(离线下载、断点下载)
今天客户又为现在开发的项目增加的新的需求,要求可以下载视频文件,支持离线下载、断点下载。没办法客户是大爷,让干什么就得干什么,所以只能去写bug了。现附上本文的demo我的项目我使用的是NSURLSession进行文件下载,同时为了不让客户忽然间又来别的需求,这里我直接写好了三种下载方式。typedef NS_ENUM(NSInteger, URLSessionDownload) { URLSessionDownloadDefault,//默认下载方式,无法支持离线和暂停原创 2021-04-01 19:29:42 · 1607 阅读 · 0 评论 -
iOS Swift RxSwift中 Subject、Variable 的使用(四)
上几章讲解都是一些常用的控件(UILabel、UIButton等)RxSwfit的使用,今天讲解Subject、Variable,这两个在以后实际项目开发过程中占据着很大的比重,所以这两个的使用在这里我回着重的讲解Variable其实本质和BehaviorSubject是一个东西,Variable相当于在BehaviorSubject进行了再次封装。当然是用上就更佳方便了。首先是Subject这里先接受一下Subject的一个特性Subjects有一个属性,就是Subjects 既是.原创 2021-03-30 17:40:10 · 1134 阅读 · 0 评论 -
iOS Swift RxSwift 的使用(三)
今天继续讲解RxSwift的使用。主要讲解UISwitch、UISegmentedControl、UISlider、UIStepper以及手势UIGestureRecognizer1、UISwitchUISwitch也是一个比较常用的控件,它主要就一个功能,开启关闭,所以他的RxSwift使用也是比较简单的,它的使用方式和UIButton不同,UISwitch不是点击事件,而是开启和关闭,所以它的执行事件不是tap而是isOn。下面附上使用代码//Switch的点击事件,对点击事件进行原创 2021-03-26 16:26:17 · 833 阅读 · 0 评论 -
iOS Swift RxSwift 的使用(二)
上篇文章呢,我们介绍了RxSwift的由来、集成、优势以及UILabel、Timer的使用,这里这些内容就不再介绍了下面介绍一下今天的主角UIButtonUIButton可以说是我们开发中最常用的控件之一了,那么RxSwift又为UIButton提供了哪些更实用的功能?这里我们先说一下普通UIButton的使用,当我们要使用一个Button的时候我们要经历两部1、UIButton的初始化,布局(代码、Xib、storyboard都行)2、添加点击事件,在点击事件里我们添加执行事件原创 2021-03-23 20:37:48 · 1956 阅读 · 0 评论 -
iOS Swift RxSwift 的使用(一)
从今天开始主要开始讲解RxSwfit的使用大家都知道iOS 目前主流的开发语言一个Object-C还有一个就是Swift,还有人说SwiftUI,这里要说明一下SwiftUI并不是开发语言,它是一个UI框架,是苹果2019年推出的新的UI框架,但是SwiftUI最低需要iOS13,版本要求过高,而我们在开发过程中还要兼容很低版本,例如我们公司最低兼容iOS9.0,随意SwiftUI就得放弃了,所以这里我们不做介绍,而Object-C还、Swift这两个语言都满足开发应用的要求,那么为什么现在OC开发的人原创 2021-03-23 19:51:29 · 1430 阅读 · 0 评论 -
iOS 防止系统截屏获取关键信息
今天开发客户忽然来了需求,禁止用户截取app内的二维码。我当时一听就懵逼了啊,截屏可是系统级别的,开发肯定是没有那么大的开发权限的,我当时就向客户反应,可是大家都知道,甲方是大哥,然后就没然后了,我这里也被逼无奈只能去对应了。其实禁止截图没有任何意义,因为完全可以其他手机拍照,所以客户这个需求没啥用,但是客户既然说要有,我也没有办法然后开始查找有没有什么监听截图的事件,果然被我发现了。第一种UIApplicationUserDidTakeScreenshotNotification (可以使.原创 2021-03-18 15:36:25 · 5426 阅读 · 2 评论 -
iOS Swift 颜色类的extension扩展使用
在iOS开发过程中,我们经常要使用到颜色,而系统给我提供的颜色局限性很高,只有RGB等颜色设置,这对我们来说使用不是很方便。而开发过程中,我们使用最多的就是"#323232"这样的形式,很显然系统提供的颜色方法就不能够满足了。这个时候我们就要对UIColor进行颜色方法的扩展,费不多说直接上代码1、首先我们创建一个类,继承自UIColor,绿色部分注意一下2、剩下的我们就只上代码了import UIKitclass SwiftColor: UIColor {原创 2021-03-08 13:33:20 · 520 阅读 · 0 评论 -
iOS swift 开发常用的第三方库
在做iOS 开发过程中,我们经常使用到第三方库例如OC中:AFNetworking、MJRefresh等,这些库我通常会用cocopods来管理。上述都是OC的,那么swift呢?其实swift对OC进行了完美兼容,如果依旧使用上述那面也依旧可以使用,我们只需要使用桥接文件并引入路径即可。下面介绍一下swift中常用到的第三方库 pod 'Alamofire' // 网络请求管理,== AFNetworking pod 'MJRefresh' // 刷新数据和加.原创 2021-03-02 20:50:46 · 3101 阅读 · 0 评论 -
iOS RunLoop 详情总结
runloop介绍RunLoop 很好理解,字面上就知道它是干什么的,Run 表示运行,Loop 表示循环,意思很明确就是不停的循环运行其实RunLoop的本质还是一个对象,然后这个对象在循环中用来处理程序运行过程中出现的各种事件(比如说触摸事件、UI刷新事件、定时器事件、Selector事件),从而保持程序的持续运行。RunLoop 在没有事件处理的时候,会使线程进入睡眠模式,从而节省 CPU 资源,提高程序性能。注意:这里的没有事情处理并不是销毁RunLoop,而是进入休眠状态,当在此接到任原创 2021-02-20 10:27:51 · 261 阅读 · 0 评论 -
iOS 弱引用weak的使用
OC开发过程中,我们经常会使用到弱引用和强引用我们为什么要使用弱引用呢?要想知道这个我们需要weak的原理。原理:Runtime维护了一个weak表,其实weak是一个hash(哈希)表,其中key表示指向对象的指针,value是一个数组,里面存储的weak指针的地址数组,当我们使用__weak的时候,我们会先查找有没有这么一个表,如果没有,我们会直接创建这个表,并把对应内容写入,如果存在,他会直接写入对应内容那为什么value是个数组呢?因为一个对象地址可能对应多个weak指针地址那.原创 2021-01-28 10:38:29 · 736 阅读 · 0 评论 -
iOS 根据规则(服务器返回数据)跳转到指定的界面
在开发过程中我们经常会遇到对接推送,推送的类型可能有很多种1、接到推送,我们跳转到推送内容的详情页面2、接到推送,我们跳转到一个网页......还有很多的情况,这个时候我们就要根据数据类型的不同进行判断,但是如果页面有很多我们就要写一大堆if else判断或switch判断。 这样做就显得很low了,而且不是非常的灵活了,而且后续如果我们增加其他页面的跳转就更不好处理了。这个时候我们就需要Runtime来实现。首先,我们要和后台定义后一个规则,这个规则不要去轻易变动例如:@原创 2021-01-25 15:20:41 · 308 阅读 · 0 评论 -
iOS 数组转字典
在开发过程中,这种情况基本是遇不到的,但是有的时候我们在写请求的时候会需要数据类型的参数例如:AFNetworking POST请求,参数为字典类型,但是我们的数据确实数组,没有任何的key、value关系,这个时候我们要怎么做呢,就是想办法将数据转成字典即可将数组转成字典其实很简单,下面直接上代码。NSError *parseError = nil;NSData *jsonData = [NSJSONSerialization dataWithJSONObject:@[@"你的数组参数"]原创 2021-01-14 10:19:28 · 1409 阅读 · 0 评论 -
iOS GCD定时器的使用
其实定时器我们有很多创建形式NSTimer、GCD等,今天我来说一下GCD版本的定时器首先,什么是GCD呢?百度一查一大堆Grand Central Dispatch(GCD) 是 Apple 开发的一个多核编程的较新的解决方法。它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统。它是一个在线程池模式的基础上执行的并发任务。在 Mac OS X 10.6 雪豹中首次推出,也可在 iOS 4 及以上版本使用。为什么使用GCD呢?因为使用 GCD 有很多优势1、GCD.原创 2021-01-13 10:30:04 · 442 阅读 · 0 评论 -
iOS AFNetworking POST、GET等5种请求的二次封装
这里使用到了常用的全局Block,可以写pch文件中typedef void (^ReturnValueBlock) (id returnValue);typedef void (^ErrorCodeBlock) (id errorCode);typedef void (^FailureBlock)(void);typedef void (^NetWorkBlock)(BOOL netConnetState);下面就是5种请求常用的封装GET#pragma mark -#pra原创 2021-01-08 17:23:42 · 1266 阅读 · 0 评论 -
iOS 后台永久保活,亲测有效
一想到后台保活,我们最常见的就是音乐播放软件了,那在我们不是音乐软件的情况下我们要如何后台保活呢?首先我们就要在Background Modes把音乐对应权限打开。这个权限打开后,我们的工作就已经完成了1/3了接下来我就就要在app进入后台的时候开始播放无声音的mp3。我这里对音乐播放器进行了简单的封装,方便使用SXAudioSessionObject.h#import <Foundation/Foundation.h>NS_ASSUME_NONNULL_B.原创 2020-12-31 10:01:58 · 4907 阅读 · 2 评论 -
iOS WebSocket 链接
今天公司用到了WebSocket长链接,查了一下资料最后得到了解决这里我们需要使用一个第三方库,我们需要引用一下SocketRocket我们最好使用pod方式引入,如果直接拖拽到项目中会发现异常报错可以使用podpod管理库, 在podfile中加入pod 'SocketRocket'在使用终端cd到当前工程 安装pod install倒入工程后就是使用了,正常很多第三库为了方便使用我们都会在这个基础上进一步封装,这里我们也对其再次封装。下面到了大家最喜欢的环节,就原创 2020-12-16 09:59:07 · 744 阅读 · 0 评论 -
iOS MJRefresh适配ios11以及iPhoneX
MJRefresh 是配iPhone异形曲面屏找到UIScrollView+MJExtension然后在找到- (void)setMj_insetT:(CGFloat)mj_insetT然后将这方法改成下面样子即可- (void)setMj_insetT:(CGFloat)mj_insetT{ UIEdgeInsets inset = self.contentInset; inset.top = mj_insetT;#ifdef __IPHONE_11_0原创 2020-12-14 13:44:43 · 420 阅读 · 0 评论 -
iOS FMDB框架的使用以及简单的封装
在开发过程中,我们经常会使用到手机本底数据库的使用,但是数据库的使用,在app也只是基本的增删改查而已。FMDB一个很好的数据库框架,为我们开发提供更好的操作。首先我们想导入一下FMDB,有两种方式第一种Cocoapods安装pod 'FMDB'第二种我们只需要直接将FMDB拖入到工程即可,附上下载链接FMDB GitHub链接:https://github.com/ccgus/fmdb这就两种安装方式,安装完成后我们,需要倒入一个依赖sqlite3.0.tbd.原创 2020-12-11 10:37:43 · 695 阅读 · 0 评论 -
iOS iPhone、iPad、Mac等禁止系统摄像头功能
今天接触一个新的项目,项目很奇葩也是第一次接触这样类型,一直以为iOS开发是不允许修改系统权限的,但是今天确实有点颠覆我的认知。项目类型,工厂要用户要屏蔽手机的一些功能(防止泄漏机密),功能要求:1、禁止使用摄像头,听到这里是不是很懵逼,怎么能让手机摄像头不让用呢?2、禁止屏幕截图,当时就是一脑袋❓3、禁止连接数据线传输数据当时看到这三个要求我就是个懵逼状态,最好终于找到了解决办法。查阅官方资料发现,苹果本身就已经考虑到这种需求,已经为我们提供了解决方案。首先,我们要下载一个ma原创 2020-11-26 17:11:01 · 3672 阅读 · 3 评论 -
iOS 佛祖保佑,永无bug等有意思的注释
复制://// _ooOoo_// o8888888o// 88" . "88// (| -_- |)// O\ =...原创 2018-12-10 10:51:07 · 1079 阅读 · 0 评论 -
iOS 获取当前手机所在页面控制器,返回指定页面
在开发过程中有时候我们会使用到获取当前所在页面的控制器那我们如何获取当前控制器呢-(UIViewController *)topViewController{ UIViewController *controller = [self topViewControllerWithRootViewController:[self getCurrentWindow].rootVie...原创 2018-09-29 16:29:43 · 699 阅读 · 0 评论 -
iOS error: couldn‘t remove ‘***‘ after command failed: Directory not
今天打开一个老项目忽然出现上述问题。上述问题的可能行有很多。第一种解决方案选择Xcode->File->Product Setttings,将Build System 设置成Legacy Build System即可不过这种方式在我这里并没有解决,于是我又找了另一种方案第二种方案其实这个报错完整方案应该是限免这样error: couldn't remove '/Users/xxx/Library/Developer/Xcode/DerivedData/xxxx/B.原创 2020-10-19 11:53:28 · 296 阅读 · 0 评论 -
iOS 调整图片尺寸和大小的两个方法
在开发过程中,我们经常会遇到图片压缩功能,下面是我写的图片压缩的两个方法首先是第一种,也是我比较推荐的/// 调整图片尺寸和大小/// @param sourceImage 原始图片/// @param maxImageSize 新图片最大尺寸/// @param maxSize 新图片最大存储大小(kb)+ (UIImage *)reSizeImageData:(UIImage *)sourceImage maxImageSize:(CGFloat)maxImageSize maxSi原创 2020-10-10 13:29:13 · 2884 阅读 · 1 评论 -
iOS 获取视频的缩略图(视频的第一帧)
首先我们要导入三个官方的库#import <AVFoundation/AVAsset.h>#import <AVFoundation/AVAssetImageGenerator.h>#import <AVFoundation/AVTime.h>导入这三个库就是获取的方法了,一中是本地的视频,另一种是网络视频// 获取视频第一帧...原创 2018-09-12 20:43:42 · 4028 阅读 · 0 评论 -
iOS AppDelegate后缀.m改成AppDelegate改成.mm时出现报错
再实现百度地图POI城市检索时,我们需要导入百度SDK以及相关的库,在导库成功后,编译的时候会出现报错信息,这时我们需要将在Xcode中在路径Build Settinngs -> Compile Sources AS 中选择Object-C++或者将任意一个文件.m的后缀改成.mm,通常情况下我们会将AppDelegate改成.mm,但是由于本人实际操作,将Compile Sources AS 中原创 2016-11-28 15:41:40 · 5147 阅读 · 0 评论 -
iOS “_OBJC_CLASS_$_***“, referenced from: objc-class-ref in QRCodeDis
在开发过程中我们经常引入第三方库,同时就会出现"_OBJC_CLASS_$_TCGenerateCode", referenced from: objc-class-ref in ***这个问题。网上有很多解决方案,但是对我的项目来说都没用,各种修改完成依旧是这个报错。第一种,也是常见的错误解决,但是这个没有解决我的报错问题1、.m文件没有导入 在Build Phases里的Compile Sources 中添加报错的文件2、.framework文件没有导入静态库编译时往往需要一些..原创 2020-09-04 12:04:22 · 1560 阅读 · 0 评论 -
iOS 二维码扫描以及二维码生成
二维码扫描在开发过程中,我们经常会遇到二维码扫描功能,下面是iOS原生扫描二维码的实现类名:ScanViewController.h 文件#import <UIKit/UIKit.h>#import <AVFoundation/AVFoundation.h>@interface ScanViewController : UIViewController<AVCaptureMetadataOutputObjectsDelegate,UIImagePick原创 2020-09-03 15:59:07 · 583 阅读 · 0 评论 -
iOS 检测设备所连接的WiFi、4G等网络是否真的可以连通
在开发过程我们经常会遇到,获取手机连接的WiFi、4G等状态,并且判断是否连接网络,通常我们使用AFNetworking、Reachability等库,只要判断连接上WiFi或者4G就表明他已经连接网络并使用,但是有时候我们所连接的网络虽然有状态但是不代表一定网络可以连通,显然这两个库并不一定满足我们的使用。所以我在网上查到一位博主发的一个帖子,经测试这个方法确实可用。//测试网络是否同的连接#define kAppleUrlTocheckWifi @"http://captive.apple.co原创 2020-08-24 16:46:20 · 1457 阅读 · 1 评论 -
iOS 导航返回到指定页面、一次返回到根试图或者让它一次性pop出几个页面
第一个,返回指定页面[self.navigationControllerpopToViewController:[[AuthenticationCodeVCalloc]init]animated:YES];还有一种, UINavigationController *navVC =self.navigationController; N原创 2018-01-31 13:51:34 · 4677 阅读 · 0 评论 -
iOS 获取设备型号(最新机型11、11 Pro、11 Pro MAX等)和App版本号等信息 以及获取是否是刘海屏
首先获取设备型号 APP版本的操作 下面便是获取手机的型号 // 获取当前App的基本信息字典 NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary]; //app名称 NSString *app_Name = [infoDictionary objectForKey:@"...原创 2018-09-15 15:08:44 · 4393 阅读 · 0 评论