![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS
文章平均质量分 72
iCodeWoods
学习 iOS 中。。。
展开
-
点击 tableViewCell 里的 button 时如何确定是哪一个 cell
首先,请打开你的微信朋友圈或者QQ空间,随便点一个评论按钮,看看是什么效果?咦,键盘弹出来了诶!(废话!)这不是重点,重点是屏幕自动滚动到了一个最合适的位置,对吗?(没试的赶紧去试一下)怎么样,有没有很棒的感觉?你天天都在用朋友圈或者空间,但你注意过这些细节吗?就算你注意到了,你想过这是怎么实现的吗?尽管我从没想过。。。但是今天师父让我去实现这样一个原创 2016-04-16 16:37:13 · 4536 阅读 · 3 评论 -
iOS开发UI篇-CALayer创建图层
本文转载自点击打开链接一、添加一个图层添加图层的步骤:1.创建layer2.设置layer的属性(设置了颜色,bounds才能显示出来)3.将layer添加到界面上(控制器view的layer上) 1 // 2 // YYViewController.m 3 // 01-创建一个简单的图层 4 // 5 // Created by转载 2016-07-20 14:52:47 · 394 阅读 · 0 评论 -
iOS开发UI篇-CALayer层的属性、隐式动画
本文转载自点击打开链接一、position和anchorPoint1.简单介绍CALayer有2个非常重要的属性:position和anchorPoint@property CGPoint position;用来设置CALayer在父层中的位置以父层的左上角为原点(0, 0) @property CGPoint anchorPoint转载 2016-07-20 14:37:56 · 624 阅读 · 0 评论 -
iOS核心动画-UIView封装动画
一、UIView动画(首尾)1.简单说明UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码放在[UIViewbeginAnimations:nil context:nil]和[UIView commitAnimati转载 2016-07-20 12:43:06 · 529 阅读 · 0 评论 -
iOS开发UI篇-CALayer简介
本文转载自点击打开链接一、简单介绍在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView。其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层,在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层@pr转载 2016-07-20 14:22:08 · 382 阅读 · 0 评论 -
iOS开发UI篇-自定义CALayer
本文转载自点击打开链接一、第一种方式1.简单说明以前想要在view中画东西,需要自定义view,创建一个类与之关联,让这个类继承自UIView,然后重写它的DrawRect:方法,然后在该方法中画图。绘制图形的步骤:(1)获取上下文(2)绘制图形(3)渲染图形 如果在layer上画东西,与上面的过程类似。代码示例:转载 2016-07-20 15:10:42 · 354 阅读 · 0 评论 -
iOS-沙盒机制
第一、什么是沙盒IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒第二、保存内容所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等第三、作用iOS沙盒为程序运行提供了很好的安全保障第四、目录1、Documents目录:这个目录用于存储用户数据或其它应该定期备份的信息,苹果建议将程序中建立的或在程序中转载 2016-07-13 18:14:01 · 460 阅读 · 0 评论 -
升级OS X 10.11后CocoaPods的安装(问题与解决方法)
OS X更新到10.11后,CocoaPods的安装和以前有了点不同。以前安装cocoapods的时候用的是这句:$ sudo gem install cocoapods现在要改成这句:$ sudo gem install -n /usr/local/bin cocoapods然后就是正常的$ pod setup。然后就会出现Setting up Coc原创 2016-07-12 16:15:52 · 3641 阅读 · 0 评论 -
NSObject 的 load 和 initialize 方法
也许有很多人都和我一样,在此之前都没有听过 load 方法。事实上,它可是 NSObject 中的第一个方法哦:load 方法平时的确不常用,但是在用到 runtime 中的 swizzling 时就需要用到它了,具体的可以看我的另一篇文章:传送门下面我们就来具体说说。===================== 我 == 是 == 分 == 隔 ==转载 2016-04-25 19:54:48 · 635 阅读 · 0 评论 -
runtime学习之- 关联(association),在分类中添加属性!
一提到runtime,很多人都会产生莫名的恐惧(比如我。。。)但事实上,runtime有相当一部分内容很简单、很好用,比如今天要讲的关联。在中,有三个和它有关的方法(是的,一共就三个):objc_setAssociatedObjectobjc_getAssociatedObjectobjc_removeAssociatedObjects顾名思义,原创 2016-04-19 11:29:32 · 1438 阅读 · 0 评论 -
runtime学习之 - 黑魔法 Swizzling,改变系统方法!
上篇文章讲述了 runtime 中的关联 association,今天我们继续来学习 runtime,揭开它神秘的黑魔法-swizzling!原创 2016-04-25 20:11:10 · 1290 阅读 · 0 评论 -
Xcode的一些常用配置
用 cocoapods 下载第三方库很方便,可是导入相应头文件的时候不能自动补齐,解决方法:在 Build Settings 中找到 User Header Search Paths,输入$(PODS_ROOT),并设为 recursive,按下回车就能看到多了一个路径,那就说明你成功了,现在再去试试就能自动补齐了。Xcode7 配置,在 Info.plist 中新增一原创 2016-03-28 19:59:41 · 550 阅读 · 0 评论 -
iOS-可变参数va_list、va_start、va_arg、va_end、NS_FORMAT_FUNCTION(1, 2)
其实这些都是C语音提供的处理变长参数的方法。在做网络请求的时候,我们几乎总是会需要组织参数。对于参数个数可变的情况,要怎么处理呢?或者说,怎么更优雅的处理呢?举个栗子:- (NSString *)appendBaseUrlWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2) { va_list args; va原创 2016-07-11 18:49:02 · 1483 阅读 · 2 评论 -
Swift-函数
使用 func 来声明一个函数。-> 后面的是函数的返回类型,举个栗子:func greet(name: String, day: String) -> String { return "Hello \(name), today is \(day)."}greet("Bob", day: "Tuesday") // 输出结果为 Hello Bob, today is Tuesday原创 2016-07-07 11:27:43 · 1548 阅读 · 0 评论 -
网易新闻顶部效果
没想到有一天我竟然真的进入了我梦寐以求的网易,虽然只是个实习生~也没想到第一个正式的任务就是做个网易新闻顶部的效果。因为之前有好多面试官都问过我类似的问题,要么就是问网易新闻顶部的这个效果,要么就是问知乎日报顶部的那个效果,没想到现在我还真要做这个了说了半天废话,到底是啥效果?(下个iOS版的网易新闻不就知道了。。。)(和安卓版的不一样)我做的效果如下图:刚开始感觉原创 2016-07-07 20:44:36 · 803 阅读 · 0 评论 -
使用CFStringTransform将汉字转换为拼音
之前做通讯录相关的一些App时,有一个比较常用的算法是将汉字转换成拼音。当时采用的做法是:将各个拼音段的首个汉字(按Unicode排序)做成两个数组,一个数组存拼音,另一个数组存拼音对应首个汉字的Unicode。如果要获取某个汉字的拼音,可以折半查找法找的对应拼音。最近无意间发现CFStringTransform这篇文章后,发现系统本身已经提供了一个这样的函数。CFStringTran转载 2016-10-17 14:22:01 · 600 阅读 · 0 评论 -
自动滚动的 tableView 和高度自适应的 textView
先来看看效果图:每一行 cell 类似于空间里的一条说说。从第一幅图中可以看到,当点击某一条说说的评论按钮时,键盘弹出来后 tableView 会自动滚动,直到这条说说正好出现在输入框上方为止。如果不这么做,这一条说说就会被键盘挡住,这样肯定不行。能考虑到这一点只是最基础的。你给别人评论的时候,textView 肯定不是一开始就很多行吧?如果写了好几行怎么办原创 2016-04-19 17:49:59 · 2524 阅读 · 0 评论 -
黑幕背后的Autorelease
我是前言Autorelease机制是iOS开发者管理对象内存的好伙伴,MRC中,调用[obj autorelease]来延迟内存的释放是一件简单自然的事,ARC下,我们甚至可以完全不知道Autorelease就能管理好内存。而在这背后,objc和编译器都帮我们做了哪些事呢,它们是如何协作来正确管理内存的呢?刨根问底,一起来探究下黑幕背后的Autorelease机制。Autorele转载 2016-09-06 16:12:01 · 634 阅读 · 2 评论 -
viewDidLoad被提前调用
今天写项目的时候发现了一个非常奇怪的问题,我一度认为可能是我的 Xcode 出了 bug。先来猜猜下面代码的执行顺序?这是一段非常常见的代码,很多 controller 都是这么写的。正常来说执行顺序肯定是 1、2、3、4 无疑。然而事实上,执行顺序却是:1、3、4、2。这就导致了一个问题:viewModel 请求不到数据,因为走到第 4 步的时候,view原创 2016-05-27 14:52:11 · 1124 阅读 · 0 评论 -
Runtime实例之-UIMenuController的使用
今天看公司代码的时候发现了一个很有意思的东西,就研究了下。如下图所示,点击某人的评论,弹出一个菜单,其中包括一些常用功能,如回复、复制、踩、分享等。这个弹出的菜单怎么实现呢?首先我们需要知道我们点击的这个评论是个什么东西。通过修改如下代码,我们可以很容易地知道它就是 commentLabel:// _commentLabel.backgroundColo原创 2016-07-27 12:03:30 · 530 阅读 · 0 评论 -
NSScanner类的基本用法
NSScanner是一个类,用于在字符串中扫描指定的字符,尤其是把它们翻译/转换为数字和别的字符串。可以在创建NSScaner时指定它的string属性,然后scanner会按照你的要求从头到尾地扫描这个字符串的每个字符。 创建一个Scanner NSScanner是一个类族, NSScanner是其中公开的一类。通常,可以用scannerWithString:或localized转载 2016-08-05 10:47:53 · 393 阅读 · 0 评论 -
iOS核心动画-关键帧动画CAKeyframeAnimation
iOS开发UI篇—核心动画(关键帧动画)一、简单介绍是CApropertyAnimation的子类,跟CABasicAnimation的区别是:CABasicAnimation只能从一个数值(fromValue)变到另一个数值(toValue),而CAKeyframeAnimation会使用一个NSArray保存这些数值属性解析:values:就是上述的NSArra转载 2016-05-16 11:46:28 · 1581 阅读 · 0 评论 -
iOS核心动画-转场动画CATransition和组动画CAAnimationGroup
本文转载自:点击打开链接一、转场动画简单介绍CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果。iOS比Mac OS X的转场动画效果少一点UINavigationController就是通过CATransition实现了将控制器的视图推入屏幕的动画效果属性解析:type:动画过渡类型subtype:动画过渡方向转载 2016-05-16 14:32:50 · 596 阅读 · 0 评论 -
iOS核心动画-CABaseAnimation
本文转载自点击打开链接一、简单介绍CAPropertyAnimation的子类属性解析:fromValue:keyPath相应属性的初始值toValue:keyPath相应属性的结束值随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐地变为toValue如果fillMode=kCAFill转载 2016-05-16 12:21:52 · 1088 阅读 · 0 评论 -
【WWDC2016 Session笔记】 iOS 10 UICollectionView新特性
本文转载自:点击打开链接前言关于 iOS 10 UICollectionView的新特性,主要还是体现在如下3个方面顺滑的滑动体验现在基本上人人都离不开手机,手机的app也每天都有人在用。一个app的好坏由它的用户体验决定。在可以滑动的视图里面,必须要更加丝滑柔顺才能获得用户的青睐。这些UICollectionView的新特性可以让你们的app比原来转载 2016-07-08 13:19:14 · 2083 阅读 · 1 评论 -
Swift-枚举、结构体、协议
用enum来创建枚举。不同的是,在Swift中,枚举可以包含方法。我们用扑克牌来举个栗子,Rank是对牌值的枚举,A,2~10,J,Q,K。enum Rank: Int { case Ace = 1, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King func simpleDesc原创 2016-07-08 10:39:08 · 1754 阅读 · 0 评论 -
10个惊艳的Swift单行代码
以下内容转载自http://www.cocoachina.com/swift/20160429/16051.html几年前,一篇表述“10个Scala函数式单行代码”的文章非常受欢迎,并且随后立马出现了其他的语言版本,例如Haskell版本,Ruby版本,Groovy版本,Clojure版本,Python版本,C#版本,F#版本,CoffeeScript版本等。我们不知道有多少人真转载 2016-04-29 09:44:19 · 965 阅读 · 0 评论 -
Swift-数组
用方括号[]来创建数组。最后一个元素后面可以有一个逗号(当然也可以没有啦)。初始化的方法有很多种:var array = [2, 3, 4, 5]var array1: Array = [2, 3, 4, 5]var array2: Array = [2, 3, 4, 5]var array3: [Int] = [2, 3, 4, 5]可以用初始化语法来创建一个空的数组:let原创 2016-05-03 18:11:45 · 662 阅读 · 0 评论 -
Xcode运行错误:failed to get the task for process XXX
昨天用adhoc的证书给项目打包,结果今天真机测试的时候出现了错误,Xcode不能运行项目了:原来是因为证书的缘故。打包时用了其它证书,开发的时候需要把证书换回原来的开发证书。如图所示,第一步选中 TARGETS,第二步选中 Build Settings,第三步把 Provisioning Profile 改成开发证书即可。原创 2016-05-11 11:39:06 · 1066 阅读 · 0 评论 -
一些错误的解决方法
使用AFNetworking时,请求提示如下错误:ErrorDomain=com.alamofire.error.serialization.response Code=-1016 “Request failed:unacceptable content-type: text/html”解决方法:在AF的源文件AFURLResponseSerialization原创 2016-03-28 19:30:57 · 653 阅读 · 4 评论 -
三行代码实现iOS9新功能-SFSafariViewController
我们直接来看完整的代码:import UIKitimport SafariServicesclass ViewController: UIViewController { @IBAction func openWithSafariVC(sender: AnyObject) { let sfsVC = SFSafariViewController(URL: NSUR原创 2016-05-10 13:59:19 · 5420 阅读 · 0 评论 -
iOS开发学习之 - 正则表达式在IOS中的应用
今天师父让我写公司项目里的注册页面,写完以后师父随便试了下,说:“手机号码怎么没加正则检测?”于是我就学习了下正则表达式(只学了连皮毛都算不上T.T)先说说我所需要的验证手机号码吧,”^1[3|4|5|7|8][0-9]\\d{8}$”,也可以写成”^1[3|4|5|7|8]\\d{9}$”。在解释它之前,我们先来个更简单的例子:"^[0-9]+$",它代表了字符串中只原创 2016-04-07 09:53:53 · 461 阅读 · 2 评论 -
使用NSMutableAttributedString添加下划线、删除线、阴影、填充、不同字体颜色等
在iOS开发中,有时会遇到需要添加下划线,或者设置字符串中某几个字的颜色的情况,最常见的栗子就是注册页面,如图所示:几乎所有注册页面中都会出现这么一句话 “点击下一步表示您已同意《用户服务协议》”,而且可以看到,“《用户服务协议》”几个字是橙色的,并且它们下面还有下划线。这是怎么实现的呢?有的同学可能会说:“不同颜色就设置两个label,让左边的label显示前半句并设置为原创 2016-04-26 14:55:55 · 13495 阅读 · 1 评论 -
制作一个属于自己的CocoaPods文件!
用了那么久别人的库,每次都是 pod install 一下就能用了,有没有想过自己弄一个出来,让别人在他的 Podfile 里写上你的库,然后 pod install?今天我们就来实现它!首先,打开终端,进入你想放置这个 pod 的文件夹中。(比如我的是一个叫做 Github 的文件夹)然后输入命令:pod lib create LZNPopoverVi原创 2016-04-22 18:37:56 · 1865 阅读 · 0 评论 -
瀑布流
之前师父让我写瀑布流,当时虽然照葫芦画瓢写出来了一个,但是并没有完全理解,今天再重新看了一遍,基本都弄懂了,记录一下。可能有的人会问:“什么是瀑布流?”就是你在淘宝上买东西时,各种商品参差不齐的展现出来。先来看看效果图吧。这是不用瀑布流的效果可以看到,左边的cell中的内容有两行,但是右边的cell中的内容只有一行,所以就会导致右边的cell上面和下原创 2016-04-20 15:23:54 · 600 阅读 · 2 评论 -
KVO 的内部实现
本文转载自点击打开链接09年的一篇文章,比较深入地阐述了KVO的内部实现。 KVO是实现Cocoa Bindings的基础,它提供了一种方法,当某个属性改变时,相应的objects会被通知到。在其他语言中,这种观察者模式通常需要单独实现,而在Objective-C中,通常无须增加额外代码即可使用。 概览这是怎么实现的呢?其实这转载 2016-03-04 09:12:50 · 378 阅读 · 0 评论 -
初识调试(1)
相信有很多初学者像我一样,程序经常崩溃掉,却又不知道是哪里出了错误,于是只能“笨笨”的添加许多NSLog(反正我是这样做的)来找到出错的根源。此时的界面通常是这样的:这样很难找到问题出在哪里。其实有一个很简单的方式可以解决这个问题。在Xcode左侧找到“Show the Breakpoint navigator”(默认快捷键是command+7)原创 2016-02-29 10:41:31 · 380 阅读 · 0 评论 -
iOS开发学习之 - 照片框架详解
本文转载自点击打开链接一. 概要在 iOS 设备中,照片和视频是相当重要的一部分。最近刚好在制作一个自定义的 iOS 图片选择器,顺便整理一下 iOS 中对照片框架的使用方法。在 iOS 8 出现之前,开发者只能使用 AssetsLibrary 框架来访问设备的照片库,这是一个有点跟不上 iOS 应用发展步伐以及代码设计原则但确实强大的框架,考虑到 iOS7 仍占有不少转载 2016-03-29 18:42:01 · 582 阅读 · 0 评论 -
NSString不用strong而用copy修饰的原因
以前一直没有彻底弄明白这其中的原因,今天终于懂了,分享给还没有懂的人~直接上代码:@interface Test : NSObject@property (nonatomic, strong) NSString *str1;@property (nonatomic, copy) NSString *str2;@end#import #import "Test.h"in原创 2016-05-11 13:07:32 · 5209 阅读 · 0 评论 -
pod install时出现错误"The dependency 'xxx' is not used in any concrete target"
今天更新了下系统,结果用CocoaPods下载第三方库的时候出现了错误,"The dependency 'xxx' is not used in any concrete target"。如下图所示:原来是因为更新了系统以后需要指明 target。解决办法:修改 podfile,如下图所示:在需要下载的库的前面和后面加上 target "xxx" do原创 2016-05-27 10:25:45 · 1160 阅读 · 0 评论