- 博客(69)
- 资源 (8)
- 收藏
- 关注

原创 Objective-C枚举类型详解
最近看了一本OC进阶的书,很多人推荐的Effective Objictive-C2.0,看到书中枚举类型的介绍,觉得很不错,这里为大家总结一下。enum由于Objective-C基于C语言,所以C语言有的功能它都有,其中之一就是枚举类型enum。枚举类型只是一种常亮命名方式,某个对象所经历的各种状态或者类型就可以定义为一个简单的枚举类型,比如一个通讯录或者聊天页的页面类型可如下定义:enum Vie
2016-04-16 13:18:13
13305

原创 Objective-C多线程详解(NSThread、NSOperation、GCD)
进程和线程 程序:一个由源代码生成的可执行应用(比如qq,微信…) 进程:进程是指在系统中正在运行的一个应用程序。一个正在运行的程序可以看成一个进程,进程负责去向手机系统申请资源,同时将这些资源调度给我们的线程线程:1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程),可以看成是可以运行的代码段,这些代码段需要的资源,比如内存,都需要去向进程申请。线程是进 程的基本执行单元
2016-01-21 14:33:12
4742
原创 Objective-C实现视图透明度的渐变
如题需求,试过增加渐变layer层,和添加阴影效果,但都是把原来的视图遮住了,效果都不理想。看文档中发现CALayer中有这样一个属性:@property(nullable, strong) CALayer *mask;把它设置为透明度渐变的效果即可实现视图的透明度的渐变需求。下面以一个图片的透明度渐变写了一个demo: 首先添加图片:- (void)viewDidLoad { [supe
2016-11-01 11:07:47
5531
原创 Objective-C屏幕旋转
捕获屏幕旋转 1.注册系统通知:(适用于所有页面) [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(changeRotate:) name:UIApplicationDidChangeStatusBarFrameNotification object:nil];- (void)changeRo
2016-10-21 16:21:46
3115
原创 Objective-C修改运动步数
iOS上面的计步应用都是访问“健康”内的数据,所以只要修改“健康”的数据就可以达到修改QQ或者微信步数的需求,装X神技。 首先打开HealthKit:TARGETS–Capabilities–HealthKit 然后倒入导入HealthKit.framework:TARGETS–Build Phases–Link Binary With Libraries 导入头文件:#import
2016-09-28 10:23:34
5422
原创 解决升级xcode8后XIB中一些视图不显示问题
近期升级了xcode8,遇到了xib视图一些空间不显示的问题,调试时发现时约束的问题,把那些不显示的视图用masonry重新约束了一下就可以了。可是cell上面重新加约束还是不行,最后定位到是图片切圆角的问题,原来的代码实在UIImageView的分类中加入了这样一个方法:-(void)setCircular{ self.layer.cornerRadius = self.frame.siz
2016-09-26 13:14:28
8109
原创 升级iOS10后访问相机、相册、麦克风、通讯录闪退
升级了iOS10和xcode8,发现访问相机、相册、麦克风、蓝牙、日历等时会出现闪退,控制台给出这样的信息:This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCame
2016-09-19 17:57:41
2457
原创 Cornerstone的Merge方法
网上看了一些文档发现时错的,这里给大家介绍一下吧: 点击要合并到的working copies,然后点击顶部的merge按钮: 之后选择Cherry Pick Changes选项: merge from即为从哪里合并,下面的选择框则为合并那次提交的变化。如果两个工程版本不是最新的需要更新到各自最新提交的版本。 选择要合并的版本之后点击Merge Changes即可。之后运行没问题的话
2016-09-09 10:18:28
7457
原创 Objective-C截取字符串时emoji表情的处理
我们在开发中会经常遇到限制字符串长度的情况,如输入框限制输入字数,我们会经常使用substringToIndex进行字符串截取,这样做有一个潜在的问题,那就是当截取的index恰好是一个emoji表情的时候,因为一个emoij在字符串的length并不等于1,这样就会把emoji表情分割开来,从而造成整个字符串不显示或者最后一个字符是乱码的情况。 起初我发现截取一半的emoji的时候吧字符串进
2016-09-09 10:05:13
6952
原创 Objective-C用UIBezierPath画图
UIBezierPath是Core Graphics框架关于路径的封装。我们通过设置路径即可画出我们想要的一些简单图形。如一个简单的需求:IM消息的展示框的一个“尖”,(下图是项目里的一条自定义消息类型) 还有下面这个: 这样一个不规则的图形我们只需要在规则的矩形View右边紧挨着画一个小三角即可。下面的代码使用UIBezierPath画了一个三角形:- (void)drawTriang
2016-08-31 15:02:50
3401
原创 Objective-C延迟执行方法总结
1.performSelector 这种方法使用起来比较方便,也可以传递参数: [self performSelector:@selector(delayAction) withObject:nil afterDelay:2];系统也提供了取消要执行的方法: [[self class] cancelPreviousPerformRequestsWithTarget:self sele
2016-08-29 14:29:01
8411
原创 Objective-C数据解析
Objective-C数据解析主要是json解析和xml解析,我们拿到的大部分还是json形式的。 json的数据形式直观易阅读,比较轻量级,一个student数据类型的json形式如下:[{"name":"张三", "gender":"不详", "age":"23", "hobby":"张鹏飞"},{"name":"赵四", "gender":"男", "age":"24", "hobby":
2016-08-24 09:27:44
1525
原创 Objective-C文字换行方式(解决英文在行末时的换行问题)
我们在做文字信息展示的时候会遇到这种情况:中文+英文(数字),当英文或者数字在行末并且过长的时候,这种情况下系统会默认把整个英文换到下一行展示。这样就会造成上一行显示不满的情况。 如果是UILabel的话直接设置lineBreakMode属性即可:label.lineBreakMode = UILineBreakModeCharacterWrap;UILineBreakModeCharacterW
2016-08-10 14:47:48
8737
原创 Objective-C属性字符串NSAttributedString
NSAttributedString是Objective-C中的属性字符串类,GitHub上也有很多第三方,用得较多的是TTTAttributedLabel,这里给大家介绍一下系统NSAttributedString类来实现富文本,并可实现点击事件,同时点击事件可携带参数。 因为要做点击事件,所以我们用UITextView,首先声明一个UITextView属性:@property (nonatom
2016-07-21 20:10:36
2376
原创 Objective-C动画二:Layer动画
UIView是iOS系统中界面元素的基础,所有的界面元素都是继承自它。它本身完全是由CoreAnimation来实现的。它真正的绘图部分,是由一个CALayer类来管理。所以在Layer层来做复杂的大动画对于资源的占用会更少一些。 一些Layer属性设置://CALayer 负责渲染绘制视图 //UIView 负责交互----UIView自带有一个layer属性 //圆角设置
2016-07-11 14:58:36
1673
原创 Objective-C动画一:View动画
我们定义一个UIView属性view4animation来执行动画:1. UIView动画块//标识着动画的开始 [UIView beginAnimations:@"btn4kuai" context:nil]; //这里面写动画的内容 //动画持续时间 [UIView setAnimationDuration:1]; //改变颜色 self.view4
2016-06-28 19:30:26
1653
原创 Objective-C用讯飞SDK实现语音识别
周末参加了一个活动,涉及到了语音识别的东西,回来整理了一下讯飞的语音识别SDK的用法,官方文档写得很详细,这里给大家过一下流程吧。 1. 获取Appid就不多做介绍了,官网注册app即可获取。 2. 集成讯飞库:讯飞 iOS framework 名称为 iflyMSC.framework,直接拖进工程或者在link Binary With Libraries中添加都行。注意:iflyMSC.fr
2016-06-27 12:37:21
3404
原创 Objective-C映客房间消息策略分析与实现
最近直播这么火,今天分析一下映客的房间消息模块。 映客的房间消息策略大体上是这样的:消息积累到一定量之后,便把之前的消息丢弃掉。消息的显示是有消息则消息tableView自动滚动到底部,如果用户滑动消息,则暂时停止滚动,5秒内不作操作则继续自动滚动。消息在最底部的时候向下滑动并不会暂停自动滚动。每一次滑动都会使计时器重置。一段时间内如果有大量滚动到最底的消息,只处理一次。主要就分为消息
2016-06-23 16:40:34
1895
原创 NSDataDetector检测文本中的url网址
NSDataDetector是继承于NSRegularExpression(Cocoa中的正则表达式)的一个子类,你可以把它看作一个正则表达式匹配器和令人难以置信的复杂的表达式,可以从自然语言(虽然可能更复杂)中提取你想要的信息。这里介绍一下用NSDataDetecto来检测文本中的网址的方法: 定义一个NSDataDetector和一个属性字符串属性:@property (strong,nona
2016-06-23 15:51:19
2367
原创 Objective-C仿映客顶部Toast提示
最近直播很火,尤以映客为甚,所以仿照映客,造了一个顶部toast提示的小轮子,支持队列显示。 开放除了这些接口,如果不够需要的话可以自己再加一些设置:+ (void)showToptoastWithText:(NSString *)text;+ (void)showToptoastWithText:(NSString *)text duration:(CGFloat)duration;+ (v
2016-06-17 14:14:52
3391
原创 Objective-C图片切圆角优化
iOS开发中我们会经常对图片进行切圆角操作,常见的做法是这样的: myImgView.layer.cornerRadius = 25; myImgView.layer.masksToBounds = YES;其中masksToBounds表示视图的图层上的子图层,如果超出父图层的部分就截取掉;还有clipsToBounds,是指视图上的子视图,如果超出父视图的部分就截取
2016-06-14 17:41:00
4375
原创 Objective-C仿映客跑车动画
做了一个仿映客跑车动画,效果就是边跑边放大,过程中车轮子也在转。先来看一下效果: 大体的思路就是把汽车和轮子图片放大一个view中,给这个view加上改变位置和大小的动画,同时,车轮子自己执行transform旋转的动画。为了方便这里的动画加在了view层,加在layer层效率会搞一些,大家主要看一下思路,代码不多,几十行就ok,属性的声明我就不贴了:- (void)viewDidLoad {
2016-06-12 20:26:44
4247
原创 Objective-C实时响应UITextField变化事件
查看UITextField的代理API,我们并没有发现像UISearchBarDelegate中- (void)searchBar:(UISearchBar )searchBar textDidChange:(NSString )searchText;类似的代理方法。- (BOOL)textField:(UITextField )textField shouldChangeCharactersIn
2016-05-19 14:05:44
2975
原创 Objective-C UITextField 禁止粘贴
新建一个UITextField的子类,重写canPerformAction:withSender:方法并返回 NO 即可禁止粘贴。- (BOOL)canPerformAction:(SEL)action withSender:(id)sender{ if (action == @selector(paste:)) return NO; return [super c
2016-05-19 13:21:18
2687
原创 Objective-C改变push、pop动画为模态效果
push: CATransition *transition = [CATransition animation]; transition.duration = 0.4f; transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
2016-05-10 16:22:51
4050
原创 Objective-C修改cell左滑按钮背景色
TableView编辑时左滑按钮的默认背景色是红色的,如图所示: 开发中可能会有改变这个按钮背景色的需求,如微信的通讯录左滑备注按钮就是灰色的,实现这个需求我们需要自定义cell,在自定义的cell中重写layoutSubviews这个方法,找到UITableViewCellDeleteConfirmationView修改它的背景色即可。- (void)layoutSubviews{
2016-04-12 18:11:31
3358
原创 Objective-C基于CIDetector的人脸检测
人脸识别过程一般分为以下3个步骤:1.首先建立人脸的面纹数据库.可以通过照相机或摄像机采集人脸的面相图片,将这些面相图片生成面纹编码保存到数据库中.2.获取当前人脸面相图片.即通过照相机或摄像机采集人脸的面相图片,将当前的面相文件生成面纹编码3.用当前的面纹编码与数据库中的面纹编码进行对比Objective-C中的Core Image 已经提供了 CIDetector 类。CIDetector是Co
2016-04-12 09:30:23
3443
原创 Objective-C利用AFN上传头像、UIAlertController的使用
iOS8推出了几个新的“controller”,主要是把类似之前的UIAlertView变成了UIAlertController,把UIAlertView和UIActionSheet二合一。 按钮响应方法弃用了代理而绑定使用了block方式。向UIAlertController里面添加UIAlertAction的方式实现之前的UIActionSheet控件的功能,把[alert show]的方法改
2016-04-11 12:53:39
2254
原创 Objective-C简单的音乐播放器(边下边播)
Objective-C中的音乐播放大多用AVAudioPlayer,它有很多优点: (1)可以播放任意长度音乐; (2)可以循环播放; (3)可以控制播放的时间; (4)可以控制声道的音量实现立体声效果; (5)可以调整音量。 但是AVAudioPlayer有一个很大的缺点,那就是只能用于播放本地音频,网络资源播放之前必须先加载,不能立即播放;但系统为我们提供了另一个更为丰富的类MPMo
2016-04-08 17:10:44
6144
原创 Objective-C自定义加载菊花UIActivityIndicatorView
很简单,直接上代码。 新建一个继承自UIView的类HalfCircleActivityIndicatorView 头文件(.h)代码:#import <UIKit/UIKit.h>@interface HalfCircleActivityIndicatorView : UIView@property (strong, nonatomic) UIColor *color;@property (
2016-03-29 17:03:48
3468
原创 XCode自定义代码提示
1.<>内的内容是代码提示后自己需要填充的,type和propertyName为提示占位文字,比如系统的代码提示的这个: 2.在<>中添加两个#,成为<#内容#>,于是就成为这种效果了: 3.点开右侧栏的这个按钮: 选中刚才写的代码拖入到下方的框中。 4.这时会出现提示框: 选择Edit,输入或选择对应的内容即可,例如strong属性的代码提示如下: 同理也可以添加a
2016-03-29 15:17:17
3148
1
原创 生日了,总要写点什么
过了今天,生命的年轮又将增长了一圈。直白点说就是——今天我生日。刚刚过去的一岁或许不甚圆满,但仍是我所珍视的一环,毕竟我又添了一岁嘛。 印象里有一首叫《祝我生日快乐》的歌,刚刚特意下载下来听听,谁知主题却是苦情失恋那一派的,并且也不怎么好听。于是切了一首,“那悲歌总会在梦里清醒,诉说一点哀伤过的往事”。。。这情调也不对,再换。“还记得年少时的梦吗?像朵永远不凋零的花。。。”这首还差不
2016-03-29 10:01:39
1887
原创 Objective-C监听键盘删除按钮
响应键盘删除按钮的事件,常规的是根据UITextfield或者UISearchBar的didChange代理方法中内同的改变来判断是否进行了点击删除按钮。但是当输入框没有内容时,就无法捕捉到删除的事件了。例如微信选择好友时用键盘的删除按钮删除已选择的好友头像。 实现的思路是利用OC的运行时机制,替换掉系统的删除runtime函数。首先建一个UItextfield的category:UITextFi
2016-03-28 18:10:13
5783
原创 UITableView索引
在做类似通讯录相关的功能时会用到tableView的索引,一个section会在一个索引目录中。通常会把联系人第一个字的首字母作为一个索引。点击对应索引,tableView会自动跳转到对应的section。 设置索引背景色: _OfficialListTableView.sectionIndexBackgroundColor=[UIColor clearColor];设置索引文字颜色:
2016-03-28 16:50:32
1615
原创 UISearchBar限制输入字数以及输入到最大限值以后不能删除
在UISearchbar中有限制输入的代理方法,在里面设置即可- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text NS_AVAILABLE_IOS(3_0); // called before text changes{
2016-03-18 12:26:23
3008
原创 Objective-C常用的宏定义
首先宏定义学习传送门:宏定义的黑魔法 - 宏菜鸟起飞手册然后介绍一些开发中常用到的宏定义,个人总结,欢迎补充: 快速weak:#define WEAKOBJ(weakObj) __weak __typeof(&*weakObj)weak_##weakObj = weakObj;#define WEAKSELF(weakSelf) __weak __typeof(&*self)weakSelf
2016-03-08 10:02:47
2353
原创 Objective-C用reachability判断当前网络类型
开发中时常需要判断当前的网络类型,根据不同的类型来做不同的操作。我们可以把这些时常用得到方法写到一个工具类里面。 首先定义一个结构体:typedef enum { NetWorkType_None = 0,//无网络 NetWorkType_WIFI,//wifi NetWorkType_2_3G,//2G或者3G网络} NetWorkType;判断网络类型的方法:+(N
2016-03-08 09:33:07
2543
原创 Objective-C利用正则表达式进行搜索时正则关键字的转义
利用正则表达式进行搜索时如果不对正则关键字进行转义常常会造成搜索结果的错误,如输入?就会匹配到全部结果,就需要对搜索关键字进行转义处理:$匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 也匹配‘\n′或‘\r′。要匹配 也匹配 ‘\n' 或 ‘\r'。要匹配 字符本身,请使用\ $。( )标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配
2016-03-07 17:35:42
2900
C#做的C/S聊天系统
2014-04-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人