自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

番薯大佬的专栏

快乐学习、快乐分享

  • 博客(25)
  • 资源 (53)
  • 收藏
  • 关注

原创 drawRect的绘制的使用(绘制文本字符、绘制图片、绘制图形)

通过重写UIView的drawRect方法进行绘制使用,如绘制文本字符、绘制图片、绘制图形等。注意事项:1、设置frame的属性,或调用setNeedsDisplay时才会调用drawRect方法。2、在绘制过程中(1)针对实际情况获取图形上下文CGContextRef context = UIGraphicsGetCurrentContext();(2)有时候,还需要在获取图

2017-02-27 16:08:19 21291

原创 CALayer绘制图片

CALayer渲染内容图层。与UIImageView相比,不具有事件响应功能,且UIImageView是管理内容。注意事项:如何使用delegate对象执行代理方法进行绘制,切记需要将delegate设置为nil,否则会导致异常crash。 CALayer绘制图片与线条效果图:代码示例: CGPoint position = CGPointMake(160.0, 20...

2017-02-21 18:20:10 3055

原创 CATextLayer绘制文本字符串

 CATextLayer使用Core Text进行绘制,渲染速度比使用Web Kit的UILable快很多。而且UILable主要是管理内容,而CATextLayer则是绘制内容。CATextLayer的绘制文本字符串的效果如下:代码示例: // 绘制文本的图层CATextLayer *layerText = [[CATextLayer alloc] init];//...

2017-02-21 17:43:38 3680 2

原创 iOS的网络通信

2017-02-21 16:22:08 474

原创 僵尸对象导致crash(Thread 1:EXC_BAD_ACCESS(code=EXC_I386_GPFLT))

APP运行过种中闪退,没有打印出任何提示信息,全局断点All Exceptions也没有起作用,而是直接进入main函数,并显示信息"Thread 1:EXC_BAD_ACCESS(code=EXC_I386_GPFLT)"。如下图所示:出现这种情况的闪退,通常是由于调用了一个已经被释放掉的、不存在的僵尸对象。查找和解决僵尸对象的方法如下:1、在scheme中打开对象跟踪的属性

2017-02-21 15:30:49 29182

原创 2017年移动App的开发趋势

转载地址:http://mobile.51cto.com/android-529999.htm智能手机和移动app的使用在2017年也不会减少。只是移动app的趋势可能会展现一些新的色彩。智能手机已经成为我们日常生活不可分割的一部分。早上用闹钟起床,使用Whatsapp,听音乐,阅读新闻,观看YouTube视频,检查邮件,更新项目状态等等——一切都可以在我们的移动设备上无缝执行。目前,

2017-02-19 00:19:13 4977

原创 NSAttributedString/NSMutableAttributedString富文本的使用(NSMutableParagraphStyle)

图文混排使用时,可以使用类NSAttributedString,或NSMutableAttributedString进行字符串的创建和相关属性的设置。其中字符串属性的设置,包括设置文本段落排版格式NSMutableParagraphStyle,也包括文本属性。代码示例// 文本段落排版格式NSMutableParagraphStyle *textStyle = [[NSMutab

2017-02-17 16:48:16 1839

原创 CADisplayLink 和 NSTimer 的差异

CADisplayLink 和 NSTimer 的差异。NSTimer 其实就是 CFRunLoopTimerRef。一个 NSTimer 注册到 RunLoop 后,RunLoop 会为其重复的时间点注册好事件。RunLoop为了节省资源,并不会在非常准确的时间点回调这个Timer。Timer 有个属性叫做 Tolerance (宽容度),标示了当时间点到后,容许有多少最

2017-02-17 11:12:07 585

原创 为什么必须在主线程中操作UI

因为UIKit不是线程安全的。如果不在主线程中操作UI,可能会造成如下的情况:(1)两个线程同时设置同一个背景图片,那么很有可能因为当前图片被释放了两次而导致应用崩溃。(2)两个线程同时设置同一个UIView的背景颜色,那么很有可能渲染显示的是颜色A,而此时在UIView逻辑树上的背景颜色属性为B。(3)两个线程同时操作view的树形结构:在线程A中for循环遍历并操作当前View

2017-02-17 10:57:32 1650

原创 自定义动态数量图片显示视图(UIImageView)

效果图代码示例注意:1、计算x坐标的变化,换行时的特别处理。每行的第一个x坐标都是相同的,即取模计算余数为0时,则重置每行的第一个x坐标为固定值。2、计算y坐标的变化,不存在换行的处理。3、图片显示子视图处理完成后,注意父视图大小的设置。// 父视图self.bgView = [[UIView alloc] initWithFrame:CGRectMake(10.

2017-02-16 09:52:16 764

原创 性能优化Instruments-Allocations工具使用

性能优化中使用Instruments-Allocations工具进行内存分配使用监测。内存爆增,且持续不释放的情况,除了是内存泄露外,还有就是对性能代码质量不过关导致。通常造成内存爆增的情况主要有:(1)不断的创建UI视图,主要体现在对列表视图的使用(UITableView,UICollectionView);(2)不断的进行数据运算,特别是大数据的运算;(3)图片处理;(

2017-02-14 17:08:53 4225

原创 性能优化Instruments-Leaks工具使用

性能优化中使用Instruments的Leaks工具进行内存泄露的检测。内存泄露,即内存被分配及使用过后,即使不再使用的该内存,也一直未被释放,从而造成无法被其他对象使用。在ARC内存管理模式下,产生内存泄露的的情况如下:(1)动画效果产生的无限循环(2)多个对象间的相互强引用 (3)定时器NSTimer的使用(4)代码块block的强引用解决方法:(1)在视图控制

2017-02-14 16:44:09 3751

原创 性能优化检测Instruments-time profile的使用

使用Instruments中的time profile工具进行运行时间的耗时检测。打开Instruments(注意:需要先打开要检测的项目文件,然后Xcode的菜单栏中选择打开Instruments)方法1:方法2:选择time profile工具,并打开运行查看(注意:选项配置)查看源码

2017-02-14 15:50:51 6453

原创 性能优化-UITableView的优化使用

TableView的性能优化1、使用reuseIdentifier来重用cells2、尽量使所有的view opaque,包括cell自身3、缓存行高4、减少subviews的数量,同时使用drawRect进行绘制5、如果cell内现实的内容来自web,使用异步加载,缓存请求结果6、避免渐变,图片缩放,后台选人7、使用shadowPath来画阴影8、尽量不使

2017-02-13 17:13:17 1945

原创 内存优化autoreleasepool的使用

在ARC内存管理模式下,使用 autoreleasepool 主要来避免频繁申请/释放内存,从页达到优化内存的效果。根据 Apple的文档(https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmAutoreleasePools.html),使用

2017-02-13 14:56:20 586

原创 main方法之前的加载时间衡量

通过设置scheme中的环境变量属性"DYLD_PRINT_STATISTICS"值为"1"实现调用main方法之前的加载时间统计。打印信息

2017-02-09 18:03:15 390

原创 弹簧动画效果

github:https://github.com/potato512/SYAnimation使用CASpringAnimation实现弹簧动画效果。效果图:代码示例:- (void)springAnimation{ UIView *view = [[UIView alloc] initWithFrame:CGRectMake(120.0, 1

2017-02-08 17:15:33 976

原创 水纹波浪效果动画

github:https://github.com/potato512/SYAnimation效果图:示例代码见"github:https://github.com/potato512/SYAnimation"中的"SYWaterAnimationView"类。使用:// 使用方法1SYWaterAnimationView *waterView = [

2017-02-08 16:29:58 3312

原创 椭圆线条绘制动画

github:https://github.com/potato512/SYAnimation使用贝赛尔曲线UIBezierPath、阴影对象CAShapeLayer、基础类动画CABasicAnimation实现。效果图如下:示例代码:- (void)lineAnimation{ UIView *view = [[UIView alloc]

2017-02-08 16:26:10 928

原创 火焰动画

github:https://github.com/potato512/SYAnimation使用发射对象CAEmitterLayer、发射单元CAEmitterCell对象创建火焰动画效果。效果图如下:代码示例:+ (void)animationFireWithImage:(NSString *)imageName view:(UIView *)view frame:(C

2017-02-08 16:22:43 491

转载 iOS ffmpeg获取视频关键帧

av_register_all(); if(av_open_input_file(&pFormatCtx, filename, NULL, 0, NULL)!=0) { printf("error!\n"); } if(av_find_stream_info(pFormatCtx)<0) { printf("error!\n"

2017-02-07 16:35:46 1809

转载 AudioServicesPlaySystemSound音频服务—IOS开发

对于简单的、无混音音频,AVAudio ToolBox框架提供了一个简单的C语言风格的音频服务。你可以使用AudioservicesPlaySystemSound函数来播放简单的声音。要遵守以下几个规则:1、音频长度小于30秒2、格式只能是PCM或者IMA43、文件必须被存储为.caf、.aif、或者.wav格式4、简单音频不能从内存播放,而只能是磁盘文件除了对简单音频

2017-02-07 16:29:55 1212

转载 iOS AVAudioPlayer音频播放器

iOS中有三种播放音频的方式:AVAudioPlayer、音频服务、音频队列。此文主要讲AVAudioPlayer,其他两个请见相关文章。AVAudioPlayer在AVFoundation框架下,所以我们要导入AVFoundation.framework。AVAudioPlayer类封装了播放单个声音的能力。播放器可以用NSURL或者NSData来初始化,要注意的是NSURL并不

2017-02-07 16:26:59 2114

转载 iOS音频

1、关于音效                              音效又称短音频,是一个声音文件,在应用程序中起到点缀效果,用于提升应用程序的整体用户体验。我们手机里常见的APP几乎都少不了音效的点缀。显示实现音效并不复杂,但对我们App很重要! 2、音效播放                              2.1、首先实现我们需要导入框架AudioTool

2017-02-07 16:10:59 372

转载 iOS iPhone操作队列 VS Java线程池

引言在涉及多线程并发操作时,如何管理多线程对共享数据的访问以及防止线程间的死锁问题是个很重要的话题。在 Java 语言中,从Java 5 开始, Java 提供了自己的线程池 ThreadPoolExecutor 类;在 iPhone 中则提供了 NSOperationQueue 类进行多线程的管理和调度。 什么是线程池?线程池到底是怎么一回事呢?其实线程池的原理很

2017-02-07 16:05:47 688

DemoNSUserdefault

iOS研发中数据缓存UserDefault的使用(Demo+文档)

2016-04-17

DemoSqlite

iOS研发中数据缓存sqlite、FMDB、LKDBHelper的使用(Demo+文档)

2016-04-17

DemoKeychain

iOS研发中数据缓存keychain的使用(Demo+文档)

2016-04-17

DemoCoreData

iOS研发中数据缓存coreData的使用(Demo+文档)

2016-04-17

DemoArchivedCoding

iOS研发中数据缓存archiver归档的使用(Demo+文档)

2016-04-17

SQLite关系型数据库的使用

iOS研发中数据缓存SQLite的使用

2016-03-26

FMDB数据库使用

iOS研发中数据缓存FMDB的使用

2016-03-26

coreData使用

iOS研发中数据缓存coreData的使用

2016-03-26

Archiver归档的使用

iOS研发中数据缓存archiver归档的使用

2016-03-26

DemoMVVM架构模式

iOS开发中常用到的技术架构为MVC,但也有用到MVVM。两者主要体现在VM将业务相关逻辑进行了封装,减轻了Controller的负担。

2016-03-02

Demolimit输入限制

在iOS开发中,常会遇到输入限制的情况。本文件档整理了常用到的输入限制,如数字输入限制,长度限制等。定义的方法既有是在代理方法中使用的,也有在通知方法中使用。

2016-02-15

DemoTimeDate

iOS开发中常用到的时间类处理封装,包括各种转换格式。如NSDate转成NSString,或NSString转成NSDate,等。

2016-01-07

小方块输入框

自定义方块输入框,类似于微信支付密码的小方块输入框

2015-11-28

CollectionView的使用

UICollectionView的使用范例,即瀑布式列表的使用。

2015-11-26

iOS移动开发框架

iOS移动开发根视图开发框架设置,Demo中包括抽屉样式,tabbar样式

2015-11-04

iOS移动开发AES加解密

iOS移动开发中使用到的AES加解密技术,使用AES256位加密,解密。

2015-11-04

iOS移动开发MD5加密

iOS开发中常用到的字符串进行MD5加密,区分32位大小写加密,16位大小写加密

2015-11-04

DemoKVO_KVC

KVO即Key-Value Observing,称为键值观察者。是一种编程设计模式,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。 KVC即Key-Value Coding,称为键值编码,它是一种可以直接通过字符串的名字(key)来访问类属性的机制。

2014-09-03

Notification

通过使用NSNotification通知类,可以实现一对多的传递关系,同时也能很好的避免类与类之间层层递进的关系。但是必须记得在使用过程中可能出现通知会被多次接收,并执行相关的方法,避免这种情况出现必须在接收通知前先移除要接收的通知。

2014-07-11

设备闪光灯

iOS开发中,使用设备闪光灯,即打开或关闭设备的闪光灯。如开发手电筒功能,或是扫一扫功能时设置闪光灯。

2014-07-02

DemoTargetDev

一个项目多个target,通过配置不同的信息,类似多个app。

2019-02-13

demoHitTest

子视图超出父视图范围时,子视图交互也能实现响应事件。

2018-11-08

DemoSignature

使用UberSignature实现手写签名。简单易用,接口API少而简,可以设置位置和大小,也可以设置画笔颜色。

2018-07-26

ViewDeck抽屉菜单

使用第三方框架ViewDeck在项目中设置抽屉式菜单。即设置中间视图控制器,左侧视图控制器,以及右侧视图控制器。或上、下视图控制器。

2017-09-19

RESideMenu抽屉视图

使用第三方框架RESideMenu在项目中设置抽屉式菜单。即设置中间视图控制器,左侧视图控制器,以及右侧视图控制器。

2017-09-19

DemoTablePageAndFrame

计算拖动时的页码以及自动加载

2017-04-18

DemoMKWebView

web view使用的优化,使用MKWebView替换UIWebView

2016-09-23

licecap录制gif软件

录制gif软件

2016-09-09

Mac中jenkins的使用

使用jenkins进行自动化构建

2016-08-23

DemoAnimation

动画效果的实现操作

2016-08-01

DemoNetwork

iOS原生网络请求,使用session,或connection方式

2016-07-24

DemoEmailSMS

iOS APP应用中打电话,发短信,发邮件功能的实现

2016-07-15

DemoThread

多线程使用示例,包括thread,operation,GCD。

2016-07-14

DemoRecognizer

手势操作UIGestureRecognizer,或UITouch

2016-07-09

DemoNSTimer

NSTimer计时器的使用,启动,停止等操作。

2016-07-08

DemoImageTableView

自定义cell中使用添加多个图片并自适应cell高度(类型于电商平台的商品评价添加图片)

2016-07-04

DemoIceRequest

iOS开发中,使用ZeroC ICE进行网络请求。

2016-05-12

DemoRecorder

录音以及音频的播放操作处理。

2016-04-29

DemoiflyMSC

使用科大讯飞进行语音书写。

2016-04-28

DemoPlist源码文档

iOS研发中数据缓存plist的使用(Demo+文档)

2016-04-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除