
iOS
icefishlily
责任与幸福同在
展开
-
iOS 苹果手机各种机型与型号对照,代码
#import <Foundation/Foundation.h>NS_ASSUME_NONNULL_BEGINtypedef NS_ENUM(NSInteger, DeviceType) { unKnown = -1, iPhone_2G = 0, iPhone_3G, iPhone_3GS, iPhone_4, iPhone_4S, iPhone_5, iPhone_5c, iPhone_5s, iPh.原创 2021-09-27 09:28:04 · 5958 阅读 · 0 评论 -
iOS - GCD
https://www.jianshu.com/p/ee08ab044d9f转载 2020-01-10 14:53:01 · 320 阅读 · 0 评论 -
UIGestureRecognizer
#import "HLPanViewController.h"#import "Masonry.h"@interface HLPanViewController ()@property (nonatomic, strong) UIImageView *imgView;@property (nonatomic, assign) CGFloat lastScale;@end@im...原创 2019-12-19 10:31:59 · 463 阅读 · 0 评论 -
iOS - 判断一个字符串是否是ip地址
/** *判断一个字符串是否是一个IP地址 **/+ (BOOL)isValidIP:(NSString *)ipStr { if (nil == ipStr) { return NO; } NSArray *ipArray = [ipStr componentsSeparatedByString:@"."]; if (ipArray原创 2017-11-20 17:14:11 · 3525 阅读 · 2 评论 -
iOS - HuggingPriority和CompressionResistance 一个例子教你理解 UILabel 抗拉伸 抗压缩
我取名 setContentHuggingPriority为 “抗拉伸”(这个名字我自己认为比较准确);setContentCompressionResistancePriority 取名为“抗压缩”,接下来有个小例子,里面解释的也是挺详细的 UILabel * label = [[UILabel alloc]init]; [self.view addSubview:label]转载 2017-12-21 10:06:03 · 2484 阅读 · 0 评论 -
iOS - 阿里云 HTTPDNS iOS 植入
首先说明一下,要解决的问题:DNS劫持。对,就是要解决DNS劫持这个问题。不太懂网络的同学们可能不太懂什么是DNS,什么又是DNS劫持,这里简单介绍一下。DNS就是域名解析系统,就是把我们平时用的网址域名(如www.baidu.com www.sina.com.cn)解析成相对应的服务器IP,只有解析成IP之后,网络请求才能找到服务器。DNS劫持是啥呢?更简单,就是有人把你的域名解原创 2017-12-21 14:18:10 · 4710 阅读 · 1 评论 -
iOS - UINavigationItem 的titleView显示不出来的解决方案
有这样一个需求,就是一个页面的顶部title需要是两行,上边是产品名称,下边是产品code,并且名称和code是不同的字号查看UINavigationItem的关于title的接口和属性:其中,title已经不能满足我的需求了,就用titleView开始我的布局是用masonry布局的,制作了一个容器view,其中放了两个UIlabel,用masonry布局,但是容器view并没有原创 2017-12-14 14:08:51 · 5979 阅读 · 0 评论 -
iOS - 递归遍历文件夹下的所有文件
- (void)showAllFileWithPath:(NSString *) path { NSFileManager * fileManger = [NSFileManager defaultManager]; BOOL isDir = NO; BOOL isExist = [fileManger fileExistsAtPath:path isDirectory:&原创 2017-12-29 16:27:41 · 6708 阅读 · 0 评论 -
iOS - -bash: /usr/local/bin/pod: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
升级10.13.1以后Pod命令失效,解决办法如下:终端执行brew link --overwrite cocoapods尝试 Pod 命令是否已经恢复若报错继续执行brew reinstall cocoapodsbrew install rubybrew link --overwrite cocoapods尝试 Pod 命令是否已经恢复转载 2018-02-07 13:44:05 · 621 阅读 · 0 评论 -
NSString各种玩转
NSString字符串属性 //////////字符串属性////////// NSString *str1 = @"string"; NSLog(@"长度: %ld", str1.length); NSLog(@"描述: %@", str1.description); NSLog原创 2017-11-15 09:54:30 · 413 阅读 · 0 评论 -
NSString 各种比较方法
- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)compareRange locale:(nullable id)locale;compare:(NSString *)传入一个需要比较的字符串。例如 [value compare:@"原创 2017-11-15 09:52:09 · 1740 阅读 · 0 评论 -
iOS - 异步倒计时,中途结束,以及异步中如何进行UI修改
有这个一个需求,需要异步下载图片,并且要求下载图片设置超时5秒,图片回来后或者倒计时到了5秒,要弹出一个alertView//开启超时计时器,活动接口发出时开启,倒计时完成后,调用timeOuthandler- (void)startTimeOutRecord { NSDate *timeout = [[NSDate alloc] initWithTimeIntervalSinceN原创 2017-11-17 14:15:57 · 546 阅读 · 0 评论 -
iOS - UIAlertController使用
UIAlertController是iOS8之后出现的,代替了UIAlertView。UIAlertView大家都很熟悉了,初始化可以设置文案,通过代理做点击处理。而UIAlertController会更简单,它的点击处理是通过blcok完成的。示例代码:UIAlertController *alertController = [UIAlertController alertContr原创 2017-08-28 15:58:43 · 1022 阅读 · 0 评论 -
AVAudioRecorder 录音
苹果提供了AVAudioRecorder类来让我们进行音频录制,是录音变的非常的便捷!在使用AVAudioRecorder进行录音之前要做几样准备工作,① 、在iOS10及以上,调用系统功能需要在info.plist文件里添加相应的key,如图,在info.plist文件下添加Key: Privacy - Microphone Usage Description, Value值可以自己随便转载 2017-07-31 16:13:02 · 1213 阅读 · 0 评论 -
AVAudioPlayer音频播放
简述AVAudioPlayer 是一个属于 AVFoundation.framework 的一个类,它的功能类似于一个功能强大的播放器,AVAudioPlayer 支持广泛的音频格式,主要是以下这些格式。AACAMR (Adaptive multi-Rate,一种语音格式)ALAC (Apple lossless Audio Codec)iLBC (internet Low Bitra转载 2017-07-31 15:56:59 · 3190 阅读 · 0 评论 -
开发时,用blocks还是Delegates
前文:网络上找了很多关于delegation和block的使用场景,发现没有很满意的解释,后来无意中在stablekernel找到了这篇文章,文中作者不仅仅是给出了解决方案,更值得我们深思的是作者独特的思考和解决问题的方式,因此将这篇文章翻译过来,和诸君探讨,翻译的很多地方不是很到位,望大家提出意见建议。原文链接:http://blog.stablekernel.com/blocks-or转载 2017-07-21 16:19:35 · 226 阅读 · 0 评论 -
iOS-解决苹果APP审核需要的IPv6地址的问题
起因:苹果APP上线被驳回,原因是使用WIFI网络+IPv6地址无法登录。 解决问题概述:网上有很多中办法解决这个问题,部分是通过IPv4转IPv6的办法,并不是真正的IPv6地址。我们想通过申请国外具有IPv6地址的VPS,然后安装Nginx转发IPv6的请求到国内的IPv4服务器。 第一步:申请VPShttp://bandwagonhost.com申请一个一年期的支持IPv6地址的VPS,一年...转载 2018-02-22 08:59:21 · 4946 阅读 · 0 评论 -
iOS - 时间日期格式化
将日期时间转化为字符串// 实例化NSDateFormatter NSDateFormatter *formatter = [[NSDateFormatter alloc] init];// 设置日期格式 [formatter setDateFormat:@"yyyy-mm-dd HH:mm:ss"];// 获取当前日期 NSDate *currentDate = [N...原创 2018-03-21 10:05:42 · 3577 阅读 · 0 评论 -
iOS - UITableView cell中添加展开关闭的功能(cell高度动态变化)
需求中,需要在一个UI列表中,添加一个可以展开和关闭的功能,可以展开和关闭的部分是一个说明文案,放在Label中。展开方向是向下展开的,这样cell的高度就变了,在布局的时候,需要动态reload这个cell。思路:在UITalbeVIew加载之前,需要提前计算好每个cell的高度,包括展开和关闭两个状态的高度,通过一个NSMutableArray维护。在cell发生高度改变时,去更改这个arra...原创 2018-03-22 09:35:05 · 1203 阅读 · 0 评论 -
iOS - CAEmitterlayer粒子发射器
转载:https://www.jianshu.com/p/197c2257f597在粒子系统中,CAEmitterLayer负责发射粒子(当然粒子也可以发射粒子),而这些所谓的粒子,就是CAEmitterCell,我们可以将CAEmitterLayer比作是CAEmitterCell的工厂,它会按照你的设置来以不同的样式不断产生粒子,也就是CAEmitterCell。(1)CAEmitter...转载 2019-06-24 15:00:19 · 629 阅读 · 0 评论 -
iOS - tagView 砖块墙 标签
我用的方法是罗列UIButton,然后通过计算进行布局直接上代码- (void)addTagsWithDictionary:(NSDictionary *)dictionary{ for (UIView *view in self.contentView.subviews) { [view removeFromSuperview]; } ...原创 2019-05-09 16:54:01 · 827 阅读 · 0 评论 -
iOS - AVFodundation转发记录
http://www.cocoachina.com/ios/20180419/23088.htmlhttp://www.cocoachina.com/ios/20180423/23121.htmlhttp://www.cocoachina.com/ios/20180426/23191.html转载 2019-04-22 09:29:40 · 184 阅读 · 0 评论 -
iOS - App进入后台,毛玻璃效果
OK!需求是这样的,当app进入后台之后,双击home键之后,app有一个模糊效果,即毛玻璃效果。目前许多金融app有这个效果(比如:招商银行、支付宝)。研究了一下,苹果原生的毛玻璃效果感觉不太美妙,下边是我认为效果最好、且不耗费内存的方法。 大致思路:1.在app即将进入后台时,对window截屏,得到屏幕图片并进行毛玻璃效果处理,处理之后将图片放在window最上边;2.在...原创 2019-02-14 15:34:10 · 3590 阅读 · 2 评论 -
iOS app内显示远程通知
最近整理了项目使用的推送资料,包括原生APNS、亚马逊推送、谷歌FireBase推送,从申请证书到代码工具调试,基本整理的差不多。 本篇文章主要介绍app在前台活跃时,有推送时显示系统的原始通知框。在网上查了很多资料,都说只能app在后台时才能调用系统的通知弹框,所以以前用的是自定义的弹框,最近发现在app活跃时,可以调用本地通知达到app前台活跃时显示系统的弹框。 ...转载 2018-12-19 19:32:39 · 824 阅读 · 0 评论 -
iOS textfield限制长度,中文占2字符,英文占1字符
之前遇到一种情况,限制textfield长度,并且要适配多语言,做到,例如中文占2字符,英文占1字符,还有考虑其他语言,网上找了很多方法,不太合适,最后结合网上的方案,修改出了还比较适用。首先,增加对textfield文字改变的监听,[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textF...转载 2018-05-24 12:16:41 · 1578 阅读 · 0 评论 -
iOS - UITableView reload 时抖动闪动漂移等问题
1.视图漂移或者闪动原因: 因为iOS 11后系统默认开启Self-Sizing,首先要知道Self-Sizing是个什么东东。官方文档是这样解释的:大概就是说我们不用再自己去计算cell的高度了,只要设置好这两个属性,约束好布局,系统会自动计算好cell的高度。 IOS11以后,Self-Sizing默认开启,包括Headers, foot...转载 2018-05-24 11:31:03 · 6662 阅读 · 1 评论 -
iOS iPhoneX 适配 之 UITableview与MJRefresh
最新iOS 11 & iPhone X适配方案传送门:10分钟适配 iOS11 & iPhoneX发现问题升级Xcode 9 + iOS 11后,发现原本没问题的collectionView和tableView像是中了风一样,头部刷新UI出现了错乱。查阅发现 iOS11弃用了automaticallyAdjustsScrollViewInsets属性,新增contentInsetA...转载 2018-05-23 10:50:43 · 3587 阅读 · 0 评论 -
iOS - Xcode编译线程数控制与测试
知识点:1.Xcode默认的编译线程数,就是cpu的内核数2.可适当增加编译线程数来提高编译速度涉及到的命令:1.获取当前内核数:sysctl -n hw.ncpu2.设置编译线程数:defaults write com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 323.获取编译线程数:defaults re...原创 2018-05-15 10:24:17 · 1768 阅读 · 0 评论 -
iOS - Xcode无线真机调试
软硬件要求:- Xcode 9.0 beat 及以上版本- macOS 10.12.5 及以上版本- iOS 11.0 beat 及以上版本连接要求电脑和设备处于同一 Wifi 环境虽然Xcode支持无线调试, 但让你的设备支持无线调试之前, 必须连接上数据线, 做好相应配置通过数据线将您的设备,连接至Xcode.打开菜单栏 Window > Devices and Simulators...转载 2018-05-15 09:26:28 · 2769 阅读 · 0 评论 -
iOS - git操作规范
git 操作规范一、 创建与合并分支1、 从master分支创建dev分支并切换到dev分支git checkout mastergit checkout -b dev其中,git checkout -b dev 等价于:git branch devgit checkout dev(1)git branch 查看本地当前的分支,分支前面带“*”表示当前分支,剩下的分支表示本地有的分...转载 2018-05-17 17:28:48 · 639 阅读 · 0 评论 -
iOS - Xcode提高编译速度,增量编译,ccache
前言贝聊目前开发的两款App分别是贝聊家长版和贝聊老师版,最近因为在快速迭代开发新功能,项目规模急速增长,单个端业务代码约23万行,私有库约6万行,第三方库代码约15万行,单个客户端的代码行数约60万。现在打包一次耗时需要11~12分钟。虽然还远远比不上 Facebook 的40分钟,但是我们在内测的时候,经常一天要发布内测版两到三次。打包时CPU占用基本上是百分百的,因为没有专门的 CI 机器,...转载 2018-05-10 14:28:38 · 5976 阅读 · 0 评论 -
iOS - 通电话时,APP页面下沉20的问题
除了iPhoneX,其他机型都有这个问题。对于用frame布局的APP,就完蛋了。解决方案其实很简单,就是换用自动布局,把绝对布局改为相对布局。说这很简单,但是对于都是frame的项目,我足足改了一整天~~!希望能给你带来一些清晰的思路吧...原创 2018-05-09 15:47:59 · 918 阅读 · 0 评论 -
iOS - 放射变换CGAffineTransform
一、理论基础请参考CGAffineTransform简单分析二、效果演示三、实现代码3.1:位移变换-(void)positionAnimation{ _demoView.transform = CGAffineTransformIdentity; [UIView animateWithDuration:1.0f animations:^{ _demoView.tr...转载 2018-05-02 15:00:26 · 347 阅读 · 0 评论 -
dSYM符号集解析iOS app线上崩溃 (atos)
收集崩溃信息 // 将系统提供的获取崩溃信息函数写在这个方法中,以保证在程序开始运行就具有获取崩溃信息的功能 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 将下面C函数的函数地址当做参数 NSSetUncaugh...原创 2018-03-27 09:36:05 · 1614 阅读 · 0 评论 -
github上关于iOS的各种开源项目集合 (转载)
github上关于iOS的各种开源项目集合(转).entry-headerUI下拉刷新EGOTableViewPullRefresh - 最早的下拉刷新控件。SVPullToRefresh - 下拉刷新控件。MJRefresh - 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能。可以自定义上下拉刷新的文字说明。转载 2017-07-17 15:30:43 · 1838 阅读 · 0 评论 -
iOS - AVPlayer播放视频,获取视频尺寸(宽高)
公司启动页要求播放视频,其实很简单,AVPlayer可以胜任此任务。- (void)playVideoWithType:(NSString *)type { //获取视频size NSURL *mediaFileUrl; if ([type isEqualToString:@"default"]) { NSString *defaultVideoPath原创 2017-07-06 14:33:55 · 17334 阅读 · 2 评论 -
iOS - UITableView加载网络图片 cell适应图片高度
项目中,有一个需求,是加载几张网络图片,每一张都要求宽度与屏幕宽度一样,然后高度自适应;并且几张自上而下一次排列。这让我想到了UITableVIew,但是图片的处理成了问题,经过我多次的处理,完成了这个需求大概的思路是:1.重写自己的Cell,Cell中利用一个UIButton展示图片,而不是UIImageView,因为这样好控制图片的宽度与屏幕一致2.每一个图片在未完成网络加载时原创 2016-09-21 11:57:51 · 13986 阅读 · 2 评论 -
iOS - 如何将本地Xcode项目上传到GitHub上
现在github上创建一个首先要cd到你的项目目录下,然后:git initgit add .git commit -m "first commit"git remote add origin https://github.com/icefishlily/audioPlayer_2.git//换成你自己的urlgit push -u origin master然后输原创 2016-09-12 11:10:54 · 2599 阅读 · 0 评论 -
iOS - AFNetwork GET POST使用例子
目前网络上流传着一个ASI和AFN比较的一张表,先放在这里看一看AFN最新版本是支持HTTP/2协议的,而ASI是不支持的。综合一下,想研究一下AFN的使用方法。对比ASIAFN更新状态2012年10月份,已经停止更新持续更新中,目前已更新至2.0版介绍ASI的直接操作对象ASIHTTPRequest,是一个实现了原创 2016-09-12 15:11:17 · 4175 阅读 · 0 评论 -
iOS - launchimage加载时间修改,以及顶部status bar隐藏
launchimage,在加载程序时会显示,但是加载程序时间很短,往往一闪即逝,所以需要进行延迟,具体做法如下:在你程序中第一个加载的viewControlle的viewDIdLoad中,添加线程延迟代码:- (void)viewDidLoad { [super viewDidLoad]; [NSThread sleepForTimeInterval:3.0f];原创 2016-09-13 12:51:46 · 3069 阅读 · 0 评论