iOS开发入门到精通
普通网友
这个作者很懒,什么都没留下…
展开
-
UIScrollView(二)
先做个小补充,上一篇貌似忘记介绍UIScrollView的缩放功能了,这里正好要给大家介绍使用UIScrollView实现图片浏览,会涉及到缩放的操作,所以就在这里介绍一下吧,此外给图片添加单击双击和长按手势也有一些小问题需要注意,就是单击和双击手势冲突问题,请戳这里:http://blog.csdn.net/liu1347508335/article/details/50519478先说先缩原创 2016-01-18 17:45:21 · 1427 阅读 · 0 评论 -
NSDataDetector检测文本中的url网址
NSDataDetector是继承于NSRegularExpression(Cocoa中的正则表达式)的一个子类,你可以把它看作一个正则表达式匹配器和令人难以置信的复杂的表达式,可以从自然语言(虽然可能更复杂)中提取你想要的信息。这里介绍一下用NSDataDetecto来检测文本中的网址的方法: 定义一个NSDataDetector和一个属性字符串属性:@property (strong,nona原创 2016-06-23 15:51:19 · 2337 阅读 · 0 评论 -
Objective-C文字加阴影方法总结
Objective-C文字加阴影原创 2016-07-26 14:40:58 · 16291 阅读 · 0 评论 -
Objective-C动画二:Layer动画
UIView是iOS系统中界面元素的基础,所有的界面元素都是继承自它。它本身完全是由CoreAnimation来实现的。它真正的绘图部分,是由一个CALayer类来管理。所以在Layer层来做复杂的大动画对于资源的占用会更少一些。 一些Layer属性设置://CALayer 负责渲染绘制视图 //UIView 负责交互----UIView自带有一个layer属性 //圆角设置原创 2016-07-11 14:58:36 · 1630 阅读 · 0 评论 -
Objective-C动画一:View动画
我们定义一个UIView属性view4animation来执行动画:1. UIView动画块//标识着动画的开始 [UIView beginAnimations:@"btn4kuai" context:nil]; //这里面写动画的内容 //动画持续时间 [UIView setAnimationDuration:1]; //改变颜色 self.view4原创 2016-06-28 19:30:26 · 1608 阅读 · 0 评论 -
Objective-C用讯飞SDK实现语音识别
周末参加了一个活动,涉及到了语音识别的东西,回来整理了一下讯飞的语音识别SDK的用法,官方文档写得很详细,这里给大家过一下流程吧。 1. 获取Appid就不多做介绍了,官网注册app即可获取。 2. 集成讯飞库:讯飞 iOS framework 名称为 iflyMSC.framework,直接拖进工程或者在link Binary With Libraries中添加都行。注意:iflyMSC.fr原创 2016-06-27 12:37:21 · 3349 阅读 · 0 评论 -
Objective-C实时响应UITextField变化事件
查看UITextField的代理API,我们并没有发现像UISearchBarDelegate中- (void)searchBar:(UISearchBar )searchBar textDidChange:(NSString )searchText;类似的代理方法。- (BOOL)textField:(UITextField )textField shouldChangeCharactersIn原创 2016-05-19 14:05:44 · 2930 阅读 · 0 评论 -
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 · 2635 阅读 · 0 评论 -
Objective-C利用AFN上传头像、UIAlertController的使用
iOS8推出了几个新的“controller”,主要是把类似之前的UIAlertView变成了UIAlertController,把UIAlertView和UIActionSheet二合一。 按钮响应方法弃用了代理而绑定使用了block方式。向UIAlertController里面添加UIAlertAction的方式实现之前的UIActionSheet控件的功能,把[alert show]的方法改原创 2016-04-11 12:53:39 · 2227 阅读 · 0 评论 -
Objective-C属性字符串NSAttributedString
NSAttributedString是Objective-C中的属性字符串类,GitHub上也有很多第三方,用得较多的是TTTAttributedLabel,这里给大家介绍一下系统NSAttributedString类来实现富文本,并可实现点击事件,同时点击事件可携带参数。 因为要做点击事件,所以我们用UITextView,首先声明一个UITextView属性:@property (nonatom原创 2016-07-21 20:10:36 · 2320 阅读 · 0 评论 -
Objective-C延迟执行方法总结
1.performSelector 这种方法使用起来比较方便,也可以传递参数: [self performSelector:@selector(delayAction) withObject:nil afterDelay:2];系统也提供了取消要执行的方法: [[self class] cancelPreviousPerformRequestsWithTarget:self sele原创 2016-08-29 14:29:01 · 8282 阅读 · 0 评论 -
Objective-C用UIBezierPath画图
UIBezierPath是Core Graphics框架关于路径的封装。我们通过设置路径即可画出我们想要的一些简单图形。如一个简单的需求:IM消息的展示框的一个“尖”,(下图是项目里的一条自定义消息类型) 还有下面这个: 这样一个不规则的图形我们只需要在规则的矩形View右边紧挨着画一个小三角即可。下面的代码使用UIBezierPath画了一个三角形:- (void)drawTriang原创 2016-08-31 15:02:50 · 3355 阅读 · 0 评论 -
Objective-C实现视图透明度的渐变
如题需求,试过增加渐变layer层,和添加阴影效果,但都是把原来的视图遮住了,效果都不理想。看文档中发现CALayer中有这样一个属性:@property(nullable, strong) CALayer *mask;把它设置为透明度渐变的效果即可实现视图的透明度的渐变需求。下面以一个图片的透明度渐变写了一个demo: 首先添加图片:- (void)viewDidLoad { [supe原创 2016-11-01 11:07:47 · 5428 阅读 · 0 评论 -
Objective-C屏幕旋转
捕获屏幕旋转 1.注册系统通知:(适用于所有页面) [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(changeRotate:) name:UIApplicationDidChangeStatusBarFrameNotification object:nil];- (void)changeRo原创 2016-10-21 16:21:46 · 3000 阅读 · 0 评论 -
Objective-C图片切圆角优化
iOS开发中我们会经常对图片进行切圆角操作,常见的做法是这样的: myImgView.layer.cornerRadius = 25; myImgView.layer.masksToBounds = YES;其中masksToBounds表示视图的图层上的子图层,如果超出父图层的部分就截取掉;还有clipsToBounds,是指视图上的子视图,如果超出父视图的部分就截取原创 2016-06-14 17:41:00 · 4315 阅读 · 0 评论 -
Objective-C映客房间消息策略分析与实现
最近直播这么火,今天分析一下映客的房间消息模块。 映客的房间消息策略大体上是这样的:消息积累到一定量之后,便把之前的消息丢弃掉。消息的显示是有消息则消息tableView自动滚动到底部,如果用户滑动消息,则暂时停止滚动,5秒内不作操作则继续自动滚动。消息在最底部的时候向下滑动并不会暂停自动滚动。每一次滑动都会使计时器重置。一段时间内如果有大量滚动到最底的消息,只处理一次。主要就分为消息原创 2016-06-23 16:40:34 · 1882 阅读 · 0 评论 -
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 · 5351 阅读 · 0 评论 -
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 · 1491 阅读 · 0 评论 -
Objective-C文字换行方式(解决英文在行末时的换行问题)
我们在做文字信息展示的时候会遇到这种情况:中文+英文(数字),当英文或者数字在行末并且过长的时候,这种情况下系统会默认把整个英文换到下一行展示。这样就会造成上一行显示不满的情况。 如果是UILabel的话直接设置lineBreakMode属性即可:label.lineBreakMode = UILineBreakModeCharacterWrap;UILineBreakModeCharacterW原创 2016-08-10 14:47:48 · 8669 阅读 · 0 评论 -
Objective-C系统原生图片下载方法封装
iOS图片下载有一个很好的第三方框架,那就是使用非常广泛的SDWebImage,这里给大家介绍的是iOS原生的系统下载图片的方法。以后再介绍一下SDWebImage的使用。 新建一个文件ImageDownloadDelegate继承自NSObject,我们将图片下载的方法封装在这个文件中。 .h文件:#import <Foundation/Foundation.h>#import <UIKit原创 2016-01-21 14:10:37 · 3004 阅读 · 0 评论 -
Objective-C枚举类型详解
最近看了一本OC进阶的书,很多人推荐的Effective Objictive-C2.0,看到书中枚举类型的介绍,觉得很不错,这里为大家总结一下。enum由于Objective-C基于C语言,所以C语言有的功能它都有,其中之一就是枚举类型enum。枚举类型只是一种常亮命名方式,某个对象所经历的各种状态或者类型就可以定义为一个简单的枚举类型,比如一个通讯录或者聊天页的页面类型可如下定义:enum Vie原创 2016-04-16 13:18:13 · 13232 阅读 · 0 评论 -
Objective-C页面消失或出现时,判断是pop还是push操作
当前的controller消失的时候回先后执行- (void)viewWillDisappear:(BOOL)animated;-(void)viewDidDisappear:(BOOL)animated;这两个方法;在这两个方法中进行判断消失的方式即可:- (void)viewWillDisappear:(BOOL)animated { NSArray *viewControllers原创 2016-03-07 16:58:27 · 8002 阅读 · 2 评论 -
Objective-C多线程详解(NSThread、NSOperation、GCD)
进程和线程 程序:一个由源代码生成的可执行应用(比如qq,微信…) 进程:进程是指在系统中正在运行的一个应用程序。一个正在运行的程序可以看成一个进程,进程负责去向手机系统申请资源,同时将这些资源调度给我们的线程线程:1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程),可以看成是可以运行的代码段,这些代码段需要的资源,比如内存,都需要去向进程申请。线程是进 程的基本执行单元原创 2016-01-21 14:33:12 · 4653 阅读 · 0 评论 -
Objective-C利用正则表达式进行搜索时正则关键字的转义
利用正则表达式进行搜索时如果不对正则关键字进行转义常常会造成搜索结果的错误,如输入?就会匹配到全部结果,就需要对搜索关键字进行转义处理:$匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 也匹配‘\n′或‘\r′。要匹配 也匹配 ‘\n' 或 ‘\r'。要匹配 字符本身,请使用\ $。( )标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配原创 2016-03-07 17:35:42 · 2854 阅读 · 0 评论 -
Objective-C用正则表达式判断字符串是否为手机号、邮箱、身份证号
用正则表达式判断字符串是否为手机号:- (BOOL)isPhoneNumber:(NSString *)str { NSString * MOBILE = @"^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$"; NSString * CM = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[278])\\d)\\d{7}$"; NSS原创 2016-03-07 17:26:25 · 4630 阅读 · 0 评论 -
Objective-C监听键盘删除按钮
响应键盘删除按钮的事件,常规的是根据UITextfield或者UISearchBar的didChange代理方法中内同的改变来判断是否进行了点击删除按钮。但是当输入框没有内容时,就无法捕捉到删除的事件了。例如微信选择好友时用键盘的删除按钮删除已选择的好友头像。 实现的思路是利用OC的运行时机制,替换掉系统的删除runtime函数。首先建一个UItextfield的category:UITextFi原创 2016-03-28 18:10:13 · 5714 阅读 · 0 评论 -
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 · 2311 阅读 · 0 评论 -
UIScrollView(一)
UIScrollView用的最多的就是轮播图和相册了,轮播图比较简单,一个定时器一个UIScrollView一个UIPageControl即可搞定,相册由于图片数量不确定则考虑到效率问题,过多的话就不能直接设置UIScrollView的contentSize为图片张数*屏幕宽度了,而是类似于轮播图的无限轮播的思路,用两个或者三个屏幕宽度的contentSize来实现图片的浏览。这时图片的浏览还需考原创 2016-01-18 17:26:53 · 1357 阅读 · 0 评论 -
UITableView的cell自适应高度
cell的自适应高度是根据内容来返回高度,其内容不确定的就是cell上的拉本来内容,所以归根结底是label根据上面的要显示内容来自适应高度。自定义UITableViewCell类:MyTableViewCell定义一个label属性:@property (nonatomic,retain)UILabel *label;cell的高度就根据label的内容来自适应。.m文件原创 2016-01-20 14:48:03 · 1651 阅读 · 2 评论 -
Objective-C页面跳转方法总结
这里就限制介绍代码实现页面跳转,Storyboard的segues方式就不多介绍了,这种方法不适合团队开发。 最多用到的就是pushViewController和与之对应的方法是popViewControllerAnimated。都需要有navigation。 语句为[self.navigationController pushViewController:newC animated:YES];原创 2016-02-26 17:09:47 · 8763 阅读 · 1 评论 -
Objective-C自定义UITabBar位置
UITabBar是开发中常用到的控件,一般应用在底部,少数有在顶部的,但UITabBar得frame的属性是readonly的不能直接修改,但是可以通过layoutSubviews来实现自定义位置新建一个类继承自UITabBar.h文件代码:@interface MytabBar : UITabBar- (instancetype)initWithFrame:(CGRect)frame;+ (i原创 2016-01-21 15:11:46 · 2569 阅读 · 0 评论 -
Objective-C Block详解
Block在iOS开发中经常常用到,例如传值和回调等场景都能利用block来实现,这里简单介绍一下Block的使用和注意事项。同C语言中的函数指针和swift中的闭包非常相似,block的使用也非常灵活,可以带参数、可以传参数、可以有返回值,也可以当做变量。Block本质上是一组代码块,可以在你想要的时间和想要的地方执行代码块中的代码。一 基本语法:用^操作符来声明一个Block变量,它表示一个Bl原创 2016-01-21 15:05:41 · 1812 阅读 · 0 评论 -
UITableView索引
在做类似通讯录相关的功能时会用到tableView的索引,一个section会在一个索引目录中。通常会把联系人第一个字的首字母作为一个索引。点击对应索引,tableView会自动跳转到对应的section。 设置索引背景色: _OfficialListTableView.sectionIndexBackgroundColor=[UIColor clearColor];设置索引文字颜色:原创 2016-03-28 16:50:32 · 1592 阅读 · 0 评论 -
Objective-C修改cell左滑按钮背景色
TableView编辑时左滑按钮的默认背景色是红色的,如图所示: 开发中可能会有改变这个按钮背景色的需求,如微信的通讯录左滑备注按钮就是灰色的,实现这个需求我们需要自定义cell,在自定义的cell中重写layoutSubviews这个方法,找到UITableViewCellDeleteConfirmationView修改它的背景色即可。- (void)layoutSubviews{原创 2016-04-12 18:11:31 · 3324 阅读 · 1 评论 -
Objective-C简单的音乐播放器(边下边播)
Objective-C中的音乐播放大多用AVAudioPlayer,它有很多优点: (1)可以播放任意长度音乐; (2)可以循环播放; (3)可以控制播放的时间; (4)可以控制声道的音量实现立体声效果; (5)可以调整音量。 但是AVAudioPlayer有一个很大的缺点,那就是只能用于播放本地音频,网络资源播放之前必须先加载,不能立即播放;但系统为我们提供了另一个更为丰富的类MPMo原创 2016-04-08 17:10:44 · 6061 阅读 · 2 评论 -
Objective-C字面量语法总结
Objective-C枚举类型原创 2016-04-25 13:48:45 · 1933 阅读 · 0 评论 -
Objective-C基于CIDetector的人脸检测
人脸识别过程一般分为以下3个步骤:1.首先建立人脸的面纹数据库.可以通过照相机或摄像机采集人脸的面相图片,将这些面相图片生成面纹编码保存到数据库中.2.获取当前人脸面相图片.即通过照相机或摄像机采集人脸的面相图片,将当前的面相文件生成面纹编码3.用当前的面纹编码与数据库中的面纹编码进行对比Objective-C中的Core Image 已经提供了 CIDetector 类。CIDetector是Co原创 2016-04-12 09:30:23 · 3396 阅读 · 0 评论 -
Objective-C用reachability判断当前网络类型
开发中时常需要判断当前的网络类型,根据不同的类型来做不同的操作。我们可以把这些时常用得到方法写到一个工具类里面。 首先定义一个结构体:typedef enum { NetWorkType_None = 0,//无网络 NetWorkType_WIFI,//wifi NetWorkType_2_3G,//2G或者3G网络} NetWorkType;判断网络类型的方法:+(N原创 2016-03-08 09:33:07 · 2433 阅读 · 0 评论 -
Objective-C基本语法
OC的语法这里就不给大家介绍了,大家慢慢熟悉。在OC的编程中大家可能不常见到C语言中函数的使用了,OC采用的是消息发送机制,将方法发送给对象。方法分为加号方法:静态方法,又称为类方法,由类来调用;方法由加号开头。建好方法:动态方法,又成为对象方法,由对象来调用;方法由加号开头。例如常见的alloc就是加好方法,init就是建好方法;同理便利构造器方法也是加好方法,对应的自定义初始化方法原创 2015-10-22 20:56:04 · 2031 阅读 · 0 评论 -
Objective-C自定义弹层UIActionSheet
系统弹层不好看?那就自己封装一个小控件吧~原创 2016-01-07 18:03:57 · 2051 阅读 · 0 评论