所有的 HTTP 报文都可以分为两类:请求报文(request message)和响应报文(response message)
报文由三部分组成:对报文进行描述的起始行(start line)、包含属性的首部(header)块,以及可选的、包含数据的主体(body)部分
start li[……]
所有的 HTTP 报文都可以分为两类:请求报文(request message)和响应报文(response message)
报文由三部分组成:对报文进行描述的起始行(start line)、包含属性的首部(header)块,以及可选的、包含数据的主体(body)部分
start li[……]
beginTime 动画开始时的延迟,比如延迟0.5秒执行,默认0,也就是马上开始
duration 动画持续时间,默认0
speed 动画速度,默认1,如果duration = 10,speed = 2, 那实际上动画5秒钟就执行完了。 设置为0会暂停动画,大于1会快进,0~1会减慢动[……]
最近端时间在做国际化,遇到不同语言中如果要使语法通顺,就必须要更改占位符对应的参数顺序
如下句子在英文的时候没有问题,但是如果是中文,参数顺序就倒过来了
1 | "Congratulations! You have got the %@ Verification on %@ %@." |
怎么[……]
最近一段时间在接入Twitter SDK,发现简直是超级麻烦,怕忘记,所以记录一下
准备工作
1. 首先你得能翻越长城(废话)
2. 需要在 https://apps.twitter.com注册Twitter账号,然后申请应用并拿到consumerKey 和 consumerSecret[……]
变换主要学习两种:仿射变换和3D变换
仿射变换采用3*3的二位矩阵乘法来进行变换,仿射的意义主要在于无论矩形怎么变换,平行的两条线在变换后依然平行,如图:
计算过程如下:
1 2 | = [x*a + y*c + 1*tx, x[......]<p class="read-more"><a href="https://gjh.me/305.html">继续阅读</a></p> |
1. maskToBounds不仅会切掉超出边界的部分,还会切掉阴影,要想阴影出来可以在下面再加一个透明视图,用父视图的layer来展示阴影
2. layer大多数的默认颜色都是黑色
3. 阴影的初始值是CGSize(0, -3),阴影是往上便宜三个像素的,这是由于CoreAnimati[……]
frame:在父视图或父layer中的绝对坐标,修改它将会影响显示的位置和大小
bounds:可以看做是一个内部坐标,改变它可以整体改变subViews或者subLayer的显示位置和大小
center:当前视图的中心点在父视图上的坐标位置
position:当前layer的锚点在父layer[……]
1. 需要注意,UIView的-drawRect:方法没有默认的实现,而且如果UIView检测到-drawRect: 方法被调用了,它就会为视图分配一个寄宿图,这个寄宿图的像素尺寸等于视图大小乘以 contentsScale的值。所以如果不需要寄宿图,有没有其他的绘制需求,那么不要在UIView的子[……]
1. contents 用于显示图片,这个属性虽然类型是id,但只能接受CGImageRef和NSImage对象,其它对象就会得到一个空白图层,需要注意OC中传递参数需要用到toll-free bridging,将CGImageRef转换为OC对象
1 | layer.contents = (__br[......]<p class="read-more"><a href="https://gjh.me/271.html">继续阅读</a></p> |
1. Cocoa中视图和Layer都是树形结构。视图可以处理事件,例如鼠标点击和手势触控,视图在层级中可以相互嵌套,一个视图可以管理它的所有子视图。Layer也可以树形嵌套,父Layer也可以管理子Layer的位置等属性,但Layer不处理用户的交互,所以Layer并不清楚具体的响应链(虽然Laye[……]