
ios平台
杰克的瘦肉铺
前端开发的 喜欢开发的可以一起交流哦~~~
展开
-
iOS 正确设定背景图片
在View里放背景图片就像很多其它iOS编程一样有很多方法:使用UIColor的 colorWithPatternImage来设置背景色;在view中添加一个UIImageView作为一个子View。如果你使用全画幅的背景图,你就必须使用UIImageView,因为UIColor的colorWithPatternImage是用来创建小的重复的图片作为背景的。这种情形下使用UIImageView可以节约不少的内存:// You could also achieve the same result in原创 2020-08-26 14:53:52 · 662 阅读 · 0 评论 -
iOS 性能优化指标
CPU占用率对象创建:对象的创建会分配内存、调整属性、甚至还有读取文件等操作,比较消耗 CPU 资源。对象调整:对象的调整也经常是消耗 CPU 资源的地方;对象销毁:对象的销毁虽然消耗资源不多,但累积起来也是不容忽视的。布局计算:视图布局的计算是 App 中最为常见的消耗 CPU 资源的地方;Autolayout:Autolayout 是苹果本身提倡的技术,在大部分情况下也能很好的提升开发效率,但是 Autolayout 对于复杂视图来说常常会产生严重的性能问题;文本计算:文本的宽高计算会占用原创 2020-08-26 14:51:06 · 782 阅读 · 0 评论 -
iOS 圆角优化实现代码
官方对离屏渲染产生性能问题也进行了优化:iOS 9.0 之前UIimageView跟UIButton设置圆角都会触发离屏渲染。iOS 9.0 之后UIButton设置圆角会触发离屏渲染,而UIImageView里png图片设置圆角不会触发离屏渲染了,如果设置其他阴影效果之类的还是会触发离屏渲染的。在APP开发中,圆角图片还是经常出现的。如果一个界面中只有少量圆角图片或许对性能没有非常大的影响,但是当圆角图片比较多的时候就会APP性能产生明显的影响。我们设置圆角一般通过如下方式:imageView.原创 2020-08-26 14:39:59 · 394 阅读 · 0 评论 -
使用GCD中的栅栏函数实现多读单写功能
多读单写的意思就是:可以多个读者同时读取数据,而在读的时候,不能取写入数据。并且,在写的过程 中,不能有其他写者去写。即读者之间是并发的,写者与读者或其他写者是互斥的。这里的写处理就是通过栅栏的形式去写。 就可以用 dispatch_barrier_sync(栅栏函数)去实现dispatch_barrier_sync: (提交一个栅栏函数在执行中,它会等待栅栏函数执行完)dispatch_barrier_async:.(提交一个栅栏函数在异步执行中,它会立马返回)而 dispatch_barri原创 2020-08-26 14:36:43 · 1510 阅读 · 0 评论 -
iOS 优化app的电量
程序的耗电主要在以下四个方面:CPU处理定位网络图像优化途径主要体现在一下几个方面尽可能降低CPU/GPU的功耗尽量少用定时器优化I/O操作不要频繁写入小数据,而是积攒到一定数量再写入读写大量的数据可以使用 Dispatch_io ,GCD 内部已经做了优化。数据量比较大时,建议使用数据库网络方面的优化减少压缩网络数据 (XML -> JSON -> ProtoBuf),如果可能建议使用 ProtoBuf(数据序列话处理)如果请求的返回数据相同,可以使用原创 2020-08-26 14:33:54 · 336 阅读 · 0 评论 -
TableView的Cell中有Textfield、TextView时放置键盘遮挡输入框
当cell里面有textfield或者textview的时候原创 2016-12-05 17:17:55 · 3733 阅读 · 1 评论 -
使用AFN 进行多次循环网络请求,如何判断何时请求完成
使用AFN 进行多次循环网络请求原创 2016-12-05 17:05:39 · 6151 阅读 · 1 评论 -
将时间戳装换为时间&&将时间装换为几天前
不废话,上干货将时间戳转换为具体时间-(NSString*)getTimeStringWithSp:(NSString *)sp{ NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; formatter.timeZone = [NSTimeZone timeZoneWithName:@"beijing"];原创 2016-06-23 15:30:20 · 772 阅读 · 0 评论 -
运用通知实现点击非键盘处回收键盘
上次项目遇到一个小问题,就是textview差不多有半个屏幕一样大,当键盘弹起的时候,就没有空白位置实现点击回收键盘,这样子用户感觉不好,所以借鉴了一点别人的方法,就是监听键盘的弹起,每当弹起的时候,创建一个透明的View 给View添加一个手势,在手势在手势的方法里,实现键盘的回收,并且移除该view和手势,最后切记,dealloc中移除通知,防止循环引用。 不废话,上代码原创 2016-06-23 15:21:18 · 214 阅读 · 0 评论 -
iPad上调用相机问题
这段时间做了一个简单的iPad应用,其中发现有些东西和手机上的还是有区别的,就比如相机的调用。正常在iPhone上写调用相机时UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera; if ([UIImagePickerController isSourceTypeAvail原创 2018-01-03 17:02:53 · 2608 阅读 · 0 评论 -
自动点击按钮(即自动触发点击事件)
这段时间做项目,有一个特殊的需求,就是界面上有一个按钮,需要自动去触发。 找了下资料,发现有个api是可以完成的 就是:sendActionsForControlEvents 这个 下面就是使用方法[Btn sendActionsForControlEvents:(UIControlEventTouchUpInside)];执行了这段代码后,就会跑去执行Btn之前定义的@select原创 2018-01-19 14:39:34 · 30042 阅读 · 0 评论 -
使用GCD 实现倒计时功能
前段时间需要实现倒计时功能,找了一下网上用NSTimer的比较多,但是实际上,NSTimer的计算倒数不准确,NSTimer受runloop的影响,由于runloop需要处理很多任务,导致NSTimer的精度降低。所有就考虑用GCD来实现此功能。实现后发现确实比NSTimer准确,而且也不麻烦,不废话 上代码。先创建一个source源@property (nonatomic, strong原创 2018-01-19 15:02:57 · 1578 阅读 · 0 评论 -
使用UIWindow实现iOS应用屏保功能
屏保功能这个需求是为了演示用的,本来是想找App Store直营店那些测试机 长时间不动,就会自动播放一个动态图,然后点击就消失的功能。但是找了许久,也没找到类似的,哪怕一点点。。。 忧郁 随,还是自己做吧。求人不如求自己首先 这个功能是为了能随时弹出来,所以肯定是要present一个VC。其次就是触发方式,在任何界面,长时间不动就会弹出来,所以要有个定时间。(定时器的就是我之前的blog原创 2018-01-19 17:22:20 · 1000 阅读 · 0 评论 -
iOS界面性能优化(转)
概述 对于界面的性能优化, 简单的说就是保持界面流畅不掉帧, 当然原理这种网上一搜一大把, 有空的话看看YYKit也就能够知晓个大概. 硬是要说原理的话, 就是当Vsync信号来临的16.67ms内CPU做完排版, 绘制, 解码, GPU避免离屏渲染之类的, 就会在Runloop下一次来临的时候渲染到屏幕上.预排版 对于界面流畅, 第一个想到的就是预排版了, 而且预排版的作用显著, 原理也...转载 2018-07-10 10:17:57 · 835 阅读 · 0 评论 -
升级Xcode11后,运行ReactNative项目报错 (__attribute__((__unused__)) 以及编译报错
果然 Xcode每次更新都会出各种幺蛾子,昨天晚上更新到Xcode11后,就发现RN项目编译报错,和启动报错,可是勤劳的中国人民总会找到各种解决方法。编译报错出现 unexpected duplicate task: ********的问题,方法一:File -> workspace settings,选择Legacy Build System。旧的build方式即可方法二:需要...原创 2019-10-08 11:08:30 · 1170 阅读 · 0 评论 -
iOS 项目中出现内存警告
这次项目中 由于没考虑到内存问题,就十分不幸的出现了传说中的内存警告⚠️ 所以 以后小伙伴们以后一定要注意内存使用问题啊!! 好了,言归正传。我这次出现内存警告的原因就是在tableview中展示图片的时候都是从后台传来的原图,刷了几下缓存就快到20M了,所以马上控制台就打印出了内存警告。。。第一次还不知道,第二次就直接crash了。。。泪崩啊 由于后台都直接传的原图的U原创 2016-06-23 15:10:51 · 2945 阅读 · 0 评论 -
iOS 开发之照片框架详解之二 —— PhotoKit 详解
一. 概况本文接着iOS 开发之照片框架详解,侧重介绍在前文中简单介绍过的 PhotoKit 及其与 ALAssetLibrary 的差异,以及如何基于 PhotoKit 与 AlAssetLibrary 封装出通用的方法。 这里引用一下前文中对 PhotoKit 基本构成的介绍: PHAsset: 代表照片库中的一个资源,跟 ALAsset 类似,通过 PHAsset 可以获取和保存资源 P转载 2016-07-14 16:58:43 · 862 阅读 · 0 评论 -
IOS中如何异步加载图片(一)封装自己的ImageDownLoad类
异步加载图片是IOS软件开发中经常用到的 下面便是一些具体的步骤与方法 希望可以帮到不懂的同学们 注意:这是在MRC环境下自己封装一个图片下载的类 方便使用 在ImageDownload.h文件中写入定义与声明@class ImageDownload;//定义一个名叫SuccessBlock的blocktypedef void(^SuccessBlock)(ImageDownload *im原创 2015-09-12 14:51:31 · 359 阅读 · 0 评论 -
IOS中如何异步加载图片(二)异步加载图片
异步加载图片的原理就是 当网络请求下来的数据中有图片的数据,就把图片的数据提出来 让它自己去通过ImageDownload下载 等下载好了,在把图片传给View去显示。 话不多说 上代码第一步 :在定义的Model类中 重新声明一个属性 用来显示图片的,在这之前 一定要引入ImageDownload的头文件哦!!!@property (nonatomic, retain) UIImage *pic原创 2015-09-12 15:42:45 · 640 阅读 · 0 评论 -
IOS中如何异步加载图片(三)KVO观察者
我们继续。。 观察者的作用就是让控制器去观察Model的属性是否发生变化,如果属性有了新值,就重新赋值 上代码!!第一步:注册观察者 // 如果movie.pictureimage为空的时候 执行下面的方法 if (movie.pictureimage == nil) { // 注册观察者 (model类需要controller类成为自己的观察者 当自己有一个属性发生变化原创 2015-09-12 16:00:57 · 360 阅读 · 0 评论 -
iOS面试题 集锦(1)
这是我从许多iOS面试题中筛选和提炼出来的,在这里留下来备用1 static关键字的作用 (表示看到这题,顿时蒙圈,static是啥啊) (1) 函数体内static变量的作用范围为该函数体,不同与auto变量,该变量的内存只被分配一次,因此其值在下次调用的时候任然维持上次的值的 (靠,说白了 就是不变的啦。。) (2) 在模块内的static全局变量可以被模块内的函数访问,但原创 2015-11-13 21:14:34 · 351 阅读 · 0 评论 -
imageNamed 与 imageWithContentsOfFile的区别
昨天在逛知乎的时候,发现了一个以前还没有注意到的问题,就是加载图片的时候是用imageNamed还是iamgeWithContentsOfFile,当时我就愣了一下,后者不是在加载文件的时候用的吗?也可以加载图片啊。。 后来查阅资料后发现,原来两者确实在加载图片的时候有区别啊,下面就是我找到的资料,仅供参考。myImage = [UIImage imageNamed:@”icon.png”];原创 2015-11-14 09:28:37 · 415 阅读 · 0 评论 -
iOS面试题 集锦(2)
今天就来接着昨天的写啊!!21 深拷贝和浅拷贝的区别 浅拷贝(copy)是只能复制指向对象的指针,而不复制引用对象本身,通过对象的指针来访问对象,只是赋值地址 深拷贝:复制引用对象本身—再创建一个对象,两个对象独立 相互不影响。22 什么是安全释放 先将对象release 再置为nil23 RunLoop是什么 事件循环,是线程里面的一个组件.主线程的RunLoop是自动开启的.分为:计时源原创 2015-11-14 16:54:01 · 295 阅读 · 0 评论 -
MVVM设计模式介绍(转)
在之前的阅读中,我发现了一个新的框架:MVVM, 是不同与常用的MVC框架(或许已经不新鲜了吧。。) 在这里就附上它的基本介绍 下面就是所转内容有时我感觉就像我不知道在做什么。虽然我知道自己的设计模式——就像任何好的编程人员那样 —— 但我太接近我在做的产品以至于不能客观地衡量我的架构决策的有效性。当队伍中来了另外一位开发者时,我意识到我们陷入困境了。从没听过 MVC ?有人称之为 Massiv转载 2015-11-14 21:26:41 · 867 阅读 · 0 评论 -
iOS 面试题 集锦(3)
昨天又看到几个题,感觉容易记混的,下面来干货!!41 cocoa和 cocoa touch?(表示都听过,就是不知道什么区别。。) cocoa包含Foundation和AppKit框架,可用于开发Mac OS X系统的应用程序 cocoa touch包含Foundation和UIKit框架,可用于开发iPhone OS 系统的应用程序 Cocoa时Mac OS X的开发环境,cocoa Tou原创 2015-11-16 20:20:40 · 368 阅读 · 0 评论 -
ViewController 瘦身的另一种解决方案(转)
原文: http://www.cocoachina.com/ios/20151116/14010.html 由于本人是学的不多,但是看这篇还是有许多技术含量的,就发出来给大家分享~~对于Massive View Controller,现在流行的解决方案是MVVM架构,把业务逻辑移入ViewModel来减少ViewController中的代码。这几天又看到另一种方案,在此介绍一下。 例子: 我们转载 2015-11-16 20:34:02 · 324 阅读 · 0 评论 -
敏捷开发流程(转)
Agile——敏捷开发,作为CMM神话崩溃后被引入的一套新的软件开发模式,这几年来被广泛引起关注,并被寄予厚望。敏捷开发在其他业界的应用是否理想不得而知,但以下总结了我所在公司的敏捷开发试验,希望可以达到管中窥豹的目的。 敏捷开发宣言—— 个体和交互 胜过 过程和工具 可以工作的软件 胜过 面面俱到的文档 客户合作 胜过 合同谈判 响应变化 胜过 遵循计划 虽然右项也有价值,但是转载 2015-11-24 19:58:40 · 367 阅读 · 0 评论 -
JSON和XML解析等区别
1.定义介绍 (1).XML定义 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。 XML是标准转载 2015-12-12 18:02:31 · 382 阅读 · 0 评论 -
SDWebImage内部实现过程
SDWebImage内部实现过程(新版本在各方法前加上了sd_前缀,以区分UIImageView+AFNetworking中的方法)1.入口 setImageWithURL:placeholderImage:options:会先把 placeholderImage 显示,然后 SDWebImageManager 根据 URL 开始处理图片。2.进入 SDWebImageManager-downloa转载 2015-12-03 20:32:17 · 295 阅读 · 0 评论 -
AFNetWorking的实现分析以及简单使用
以下就是cocospod中AFNetworing除了几个分类外的所有类。类库的头文件AFNetworking.h引入了下面的所有类库,并可以根据不同的系统使用不同的实现方式。下面大体介绍下每个类的大致作用,主要以翻译API的注释文档为主。1:AFURLConnectionOperation 可以说是AFN最基础的类。继承自NSOperation类,将网络请求依附到一个operation上。从而让我转载 2015-12-03 20:56:46 · 302 阅读 · 0 评论 -
iOS 开发之照片框架详解
一. 概要在 iOS 设备中,照片和视频是相当重要的一部分。最近刚好在制作一个自定义的 iOS 图片选择器,顺便整理一下 iOS 中对照片框架的使用方法。在 iOS 8 出现之前,开发者只能使用 AssetsLibrary 框架来访问设备的照片库,这是一个有点跟不上 iOS 应用发展步伐以及代码设计原则但确实强大的框架,考虑到 iOS7 仍占有不少的渗透率,因此 AssetsLibrary 也是本文转载 2016-07-14 16:30:37 · 436 阅读 · 0 评论 -
iOS中Tager-Action 应用举例实现 高内聚低耦合
Tager-Action应用举例原创 2015-08-24 19:48:48 · 547 阅读 · 0 评论