UserDefaults中存储的中能是Property List Objects
创建私有pod库并发布到Cocoapods
老哥们,小弟又来了!哈哈
最近工作闲了下来,在等设备安装之后调试,因为觉得好玩闲来无事搞了搞pod,发布了个CJSegmentController
探究
不知道各位对pod的理解是怎样,以前虽然常用Cocoapods,但是其实不太清楚原理。最近探究据我的理解是:pod中的各种三方库是存放在cocoapods管理的一个git项目中,当我们在新设备上安装pod的时候记得要setup
一下么?执行pod setup
操作后我们会在cocoapods的目录下将pod的远程master分支拉取到本地。默认路径为~/.cocoapods/repos/master
。如下图
拿AFN来举例,进入文件夹发现有不同版本的文件夹。每个版本的文件夹对应的是该版本的podspec.json配置文件,来看一下该配置文件里都存储了什么信息:
这基本也就是podspec(即该库该版本的配置信息),上面几条估计大家都能看明白,然后看到'source'
这条,what means?? git即为AFN公布的git地址。可以看到在github上。那下面的tag是什么?这里就是至关重要的一点,tag
,我想git熟练的老哥们应该知道tag是个啥。tag就是标签嘛。一般在某一产品发布之后在git中打上tag可以便于我们寻找哪个版本app的位置。
打Tag
切换到当前需要打tag的git节点下,tag命令如下:
git tag -a v1.0.3 -m ‘release version’ //创建一个名为1.0.3的tag(-m为可选)
git push –tags //将tag推到remote
然后pod根据配置文件中的这个tag值去你的git source中查找对应版本的三方库。
原理就讲到这里,还有几个重要的标签,我们接下来再讲。
Xcode添加多个Target
Target概念
Target 是用来指定一个需要构建(build)的产品,其中包含了从project或workspace中的一系列文件在构建时的信息。Target定义了一个简单的产品;它将输入信息打包进编译系统(包含构建中必须的源文件和处理源文件的说明)。项目(Project)中可以包含一个或者多个Target,每一个都可以产生一个产品。
构建产品的说明是以构建信息(build settings)和构建阶段(build phases)组成,你可以在Xcode项目编辑器(product editor)中编辑这些说明。Target继承项目的构建设置(build settings),但是你可以通过在不同的target level指定不同的设置信息来重载它。(其实也可以在All中也可以自行修改。对应的在Level中系统会进行更新,如图-1)。同时只能存在一个可用的target;Xcode scheme来指定哪一个是可用的。
target和它的产品可以跟另一个target关联。如果一个target进行构建时需要另一个target的输出作为输入信息,前者依赖后者。如果他们都是在同一个workspace,Xcode可以发现依赖关系,并按顺序来构建产品。这种关系成为隐性依赖(implicit dependency)。你也可以在构建设置(build settings)中指定依赖关系,并且指定两个实际上没有依赖关系的target成为隐性依赖关系。举个例子,你可能在同一个workspace中创建一个library和一个需要链接该library的application。Xcode可以发现这个关系,并且首先构建library。然而你想链接本workspace之外的library,你需要在构建设置(build settings)中创建一个显性依赖来重载这个隐性依赖。
CocoaPods的安装以及多版本Pods共存
CocoaPods的定义
当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等。可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其他类库又用到其他类库,“子子孙孙无穷尽也”,这也许是比较特殊的情况。总之小编的意思就是,手动一个个去下载所需类库十分麻烦。另外一种常见情况是,你项目中用到的类库有更新,你必须得重新下载新版本,重新加入到项目中,十分麻烦。如果能有什么工具能解决这些恼人的问题,那将“善莫大焉”。所以,你需要 CocoaPods。
CocoaPods应该是iOS最常用最有名的类库管理工具了,上述两个烦人的问题,通过cocoaPods,只需要一行命令就可以完全解决,当然前提是你必须正确设置它。重要的是,绝大部分有名的开源类库,都支持CocoaPods。所以,作为iOS程序员的我们,掌握CocoaPods的使用是必不可少的基本技能了。
在Mac上默认已经为我们配置好了Ruby环境,所以Mac用户基本可以直接跳过Ruby环境配置.如果Ruby有问题请链接到这里
iOS8 TableView 自动算高
在iOS8及以上系统中,可以使用AutoLayout来设置cell,使得内容 撑起 Cell,而只需要将tableView的rowHeight
属性设置为UITableViewAutomaticDimension
自动计算,然后使用
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
return 50;
}
iOS绘图思想
iOS绘图思想
高质量图像是应用UI中重要的一部分,提供高质量图像不仅会让应用看起来更棒,还会使它看起来像原生系统的扩展。iOS系统提供两种基础的方式来创建高质量图像:openGL
或原生渲染(Quartz,Core Animation,UIkit)
。本文描述的是用原生渲染(如果您想学习OpenGL绘图,请看链接)
Quartz是主要的绘画接口,提供支持如:基于路径的绘图,抗锯齿渲染,渐变填充图案,图片,颜色,坐标空间变换,以及PDF创建、显示、解析。UIKit提供了通过OC封装的文字艺术(line art),Quartz 图片以及颜色处理。Core Animation为UIKit中view的property的基础动画变换提供了底层支持并且可以用来实现自定义动画。
本章节提供了iOS应用绘画的过程概述,伴随着每一种绘画技术都会有特定的绘画技巧。你将找到在iOS平台上优化绘画代码的提示和指导。
不是所有的UIkit类都是线程安全的。在主线程外的其他线程中执行绘画操作时请先检查文档。
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.