![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS
文章平均质量分 90
GR_Harry
这个作者很懒,什么都没留下…
展开
-
由xib创建的类,被继承后的问题
一直听说xib创建的文件不能被继承,但不知道为什么。今天研究了一下,我认为xib被继承的最大问题是:当子类创建实例时,是从xib中获取的,而从xib中获取的对象一定是和该xib文件关联的类的对象。也就是说子类根本没有创建出自己的实例,而是父类的实例。这样的话,虽然在子类中能够调用到父类的公有方法,但是根本无法重写父类的方法,因为根本没有子类的实例去调用重写的方法。看代码:// 继承关系@inter原创 2015-05-29 16:21:35 · 2613 阅读 · 0 评论 -
长按移动cell
前言: 之前见过瀑布流中的cell,由手势拖动变换位置的效果,一直觉得很炫很神奇。今天无意在破船之家看到了这种效果的实现方法。最核心的位置变换只需掉俩个方法,然后由系统完成。所以很简单,没有想象中的那么复杂。我们先从简单的Tableview开始。 效果如下 实现过程给tableview添加长按手势。在手势开始时,获取选中的cell,对cell截图。cell隐藏,截图的frame和cell的f原创 2015-09-29 18:24:32 · 518 阅读 · 0 评论 -
OC 四舍五入
(NSInteger)round(2.4) –> 2 (NSInteger)round(2.5) –> 3原创 2015-10-06 22:40:06 · 1496 阅读 · 0 评论 -
升级到OSX10.11后cocopods不正常的问题
pod install 报错: -bash: pod: command not found原因 :EI Capitan大概好像是cocoapod应该装到另外一个路径才能使用.打开命令行工具,输入 sudo gem install -n /usr/local/bin cocoapods然后CocoaPods就正常了转载 2015-10-08 12:05:28 · 350 阅读 · 0 评论 -
UICollectionViewFlowLayout has cached frame mismatch for index path
在升级XCode7.0使用UICollectionViewLayout进行自定义布局时,调试台会出现以下的警告打印。 UICollectionViewFlowLayout has cached frame mismatch for index path {length = 2, path = 0 - 0} - cached value: {{122, 15}, {170, 170}}; exp原创 2015-10-25 11:07:01 · 1887 阅读 · 1 评论 -
Block对捕捉变量的影响
以前只知道block可以捕捉环境中的变量并且会拷贝该变量,但是是深拷贝还是浅拷贝呢?对于这个问题一直很模糊,今天用几个例子来研究一下这个问题。先看个例子1: NSMutableArray *array = [NSMutableArray arrayWithObjects:@"1",@"2", nil]; NSLog(@"之前 - %p", array); void (^bloc原创 2015-11-11 14:37:33 · 379 阅读 · 0 评论 -
折叠效果实现
在进入正文前,想说明些事,之前写博客的目的主要是给自己做个笔记,方便以后的回顾。所以,有些博客没有写出处。我最近的关于动画交互的博客,大都是从这个博客(杨骑滔博客地址)上学习到的。他还是个学生,但是却立志要做出最棒的用户交互,博主真心佩服。 我的博客中是自己对实践过程的体会和一些总结,但由于博主才疏学浅,如果读者不是很明白可以到他的博客上学习。以后每篇文章都会贴出链接。这篇的链接 这就是要原创 2015-09-21 17:57:09 · 739 阅读 · 0 评论 -
The Swift Pods being used are: Box, ReactiveCocoa, and Result
今天用cocoapod安装ReactiveCocoa时,报以下错误解决方法在pod file中加入 use_frameworks!原创 2015-11-12 15:24:36 · 656 阅读 · 0 评论 -
Xcode升级后,插件无法工作的问题
在命令行中,输入:find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth 3 | xargs -I{} defaults write {} DVTPlugInCompatibilityUUIDs -array-add `defaults read /Applic原创 2015-11-14 11:49:26 · 394 阅读 · 0 评论 -
被误解的 MVC 和被神化的 MVVM
被误解的 MVCMVC 的历史MVC,全称是 Model View Controller,是模型 (model)-视图 (view)-控制器 (controller) 的缩写。它表示的是一种常见的客户端软件开发框架。MVC 的概念最早出现在二十世纪八十年代的 施乐帕克 实验室中(对,就是那个发明图形用户界面和鼠标的实验室),当时施乐帕克为 Smalltalk 发明了这种软件转载 2016-01-03 00:12:29 · 580 阅读 · 0 评论 -
cocoaPods的安装及使用
1. 安装我们可以用淘宝的Ruby镜像来访问cocoapods。按照下面的顺序在终端中敲入依次敲入命令: gem sources --removehttps://rubygems.org///等有反应之后再敲入以下命令 gem sources -a https://ruby.taobao.org/为了验证你的Ruby镜像是并且仅是taobao,可以用以下命令查看: ge原创 2016-01-07 21:44:01 · 376 阅读 · 0 评论 -
iOS7自定义视图控制器过渡3-关于Push和Pop的过渡
前言:在之前的俩篇中,很多人可能发现我们一直在用模态的方式转换控制器,但是在开发过程中大多数情况下是用导航控制器来管理自己的视图控制器的。那么在Push或Pop的时候怎么实现过渡效果呢?其实很简单,和之前的基本一样,只是返回事件动画对象和手势交互动画对象的代理方法不一样了(此时是UINavigationControllerDelegate中的方法)仅此而已。那么,举个例子来练习一下吧。正文: Pu原创 2015-09-08 15:04:54 · 752 阅读 · 0 评论 -
iOS7自定义视图控制器过渡4-自定义手势过渡动画
前言:之前三篇中,手势过渡动画都是直接使用事件动画的,其实我们可以使用代理方法自定义手势动画。在上一篇列子的基础上,重新定义一个手势交互动画对象。正文: 最终效果: 由于Push和Pop时的事件动画和上篇都一样,这里着重看手势交互动画。分析动画实现策略—> 过渡开始前,在SecondViewController中的大图上添加一个拖拽手势。 —> 过渡开始时,对SecondViewControl原创 2015-09-08 17:59:11 · 737 阅读 · 0 评论 -
iOS7自定义视图控制器过渡2-手势交互过渡
前言:今天会在上一篇的例子的基础上扩充手势交互过渡。手势交互过渡和事件过渡的实现方法差别不大,只需在代理方法中返回一个手势交互过渡动画对象,主要差别就是这个动画对象的实现上,这个动画对象遵守的是UIViewControllerInteractiveTransitioning协议,而不再是 UIViewControllerAnimatedTransitioning。原因在于事件过渡的过程是时间的函数原创 2015-09-07 18:27:35 · 749 阅读 · 0 评论 -
正则表达式初级使用
一般从 需要匹配的字符、匹配字符的位置、匹配数量 3个方面就能从源串中找到自己想要的字符串。如何匹配字符: 1) 普通字符,直接写。eg :hi, 8。 2) 某种字符: \d : 匹配数字。 \w : 匹配字母或数字或下划线或汉字。 \s :匹配任意的空白。 . : 匹配任意字符。 3)特殊字符(比如元音字母a,e,i,o,u): [] : 表示括号中的某个字符原创 2015-05-31 11:41:42 · 331 阅读 · 0 评论 -
iOS 事件传递
事件传递过程: UIApplication —> UIWindow —> UIWindow的子控件。 从UIWindow开始,所有的UI控件会依据父子关系逐层寻找各自合适的View,最终找到一个最合适的view,将事件交给这个view处理。合适的View的标准 1) 能接收触摸事件。 2)触摸点在自己身上。 第2点很容易明白,但是第1点有点模糊,一个view怎样才能接收触摸事件呢,其实只原创 2015-06-02 23:27:41 · 251 阅读 · 0 评论 -
iOS8 指纹识别集成
1. 引入库#import 2. 实例化对象 LAContext *context = [[LAContextalloc] init]; NSError *error = nil; context.localizedFallbackTitle =@"手动输入密码";// 验证失败时,会多提供一个按钮,一般用于提供手动输入的接原创 2015-05-24 02:26:20 · 854 阅读 · 0 评论 -
SQL语句(一)
学习SQLite数据库之前一定要了解SQL语句。一、SQL语句的特点 1. 不区分大小写; 2. 以;(分号)结尾。二、SQL语句种类: 1. 数据定义语句(DDL:Data Definition Language) 包括建表(create)和删表(drop)操作。数据操作语句(DML:Data Manipulation Language) 包括数据插入(insert)、删除(delet原创 2015-06-08 22:53:34 · 309 阅读 · 0 评论 -
NSUserDefaults的registerDefaults方法解析
NSUserDefaults还提供了一个registerDefaults方法,通常在appDelegate的didFinishLaunchingWithOptions里调用(BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions {转载 2015-06-30 23:20:03 · 1192 阅读 · 0 评论 -
iOS 代码行数统计
1、打开终端 2、cd 进入项目根目录(首先打开终端,然后如图cd到你要统计的那个目录,小技巧 路径咋写上去的,先写cd 然后把你文件夹拖动到终端里面,这样路径就上去了) 3、输入命令 find . “(” -name “.m” -or -name “.mm” -or -name “.cpp” -or -name “.h” -or -name “*.rss” “)” -print | xar原创 2015-05-24 02:38:27 · 501 阅读 · 0 评论 -
全局变量和全局静态变量的区别
1)全局变量是不显式用static修饰的全局变量,全局变量默认是有外部链接性的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量。 2)全局静态变量是显式用static修饰的全局变量,作用域是声明此变量所在的文件,其他的文件即使用extern声明也不能使用。// Book.hNSString *const bookName =原创 2015-06-30 22:24:49 · 1627 阅读 · 0 评论 -
AVAudioPlayer和MPMusicPlayerController的区别
AVAudioPlayer is able to play one song at a time. It cannot access iPod Library means you cannot play songs which are present in user’s iPod’s Library. But biggest advantage I see is AVAudioPlayer can原创 2015-06-12 11:39:41 · 532 阅读 · 0 评论 -
iOS7自定义视图控制器过渡1-动作过渡
前言:视图控制器的过渡是发生在俩个视图控制器切换的过程中,在这一时间段内,我们利用SDK中提供的方法做出炫目的动画,提高用户体验。自定义视图控制器过渡分为两种:动作事件过渡和手势交互过渡。这篇中先介绍简单点的动作事件过渡,手势交互在下一篇中介绍。正文:现在我们举个列子来介绍实现动作事件过渡的方法。我们先创建俩个视图控制器,一个叫ViewController(蓝色的那个),一个叫原创 2015-09-07 00:50:45 · 462 阅读 · 0 评论 -
[[UIScreen mainScreen] applicationFrame] 和 [[UIScreen mainScreen] bounds]的区别
[[UIScreen mainScreen] applicationFrame] 打印结果: {{0, 20}, {414, 716}}[[UIScreen mainScreen] bounds] 打印结果: {{0, 0}, {414, 736}}[[UIScreen mainScreen] applicationFrame]不包含状态栏的尺寸原创 2015-12-25 10:11:44 · 315 阅读 · 0 评论