2017/3/13lesson

Mar 13, 2017

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//创建标准的变换矩阵
CGAffineTransform CGAffineTransformIdentity;
//手动创建变换矩阵
CGAffineTransform CGAffineTransformMake(CGFloat a, CGFloat b, CGFloat c, CGFloat d, CGFloat tx, CGFloat ty);
//创建平移变换
CGAffineTransform CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty);
//创建缩放变换
CGAffineTransform CGAffineTransformMakeScale(CGFloat sx, CGFloat sy);
//创建旋转变换
CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle);
//判断某个变化是否是来自标准矩阵的变换
bool CGAffineTransformIsIdentity(CGAffineTransform t);
//对某个变换矩阵进行平移变换
CGAffineTransform CGAffineTransformTranslate(CGAffineTransform t, CGFloat tx, CGFloat ty);
//对某个变换矩阵进行缩放变换
CGAffineTransform CGAffineTransformScale(CGAffineTransform t, CGFloat sx, CGFloat sy);
//对某个变换矩阵进行旋转变换
CGAffineTransform CGAffineTransformRotate(CGAffineTransform t, CGFloat angle);
//对某个变换矩阵进行翻转变换
CGAffineTransform CGAffineTransformInvert(CGAffineTransform t);
//对两个变换矩阵进行计算
CGAffineTransform CGAffineTransformConcat(CGAffineTransform t1, CGAffineTransform t2);
//比较两个变换矩阵是否相同
bool CGAffineTransformEqualToTransform(CGAffineTransform t1, CGAffineTransform t2);
//获取应用变换后某点的坐标
CGPoint CGPointApplyAffineTransform(CGPoint point, CGAffineTransform t);
//获取应用变换后某个区域的尺寸
CGSize CGSizeApplyAffineTransform(CGSize size, CGAffineTransform t);
//获取应用变换后某个区域的位置和尺寸
CGRect CGRectApplyAffineTransform(CGRect rect, CGAffineTransform t);

记录一下矩阵变换含义

昨天做了下图片PhotoKit取图片,使用PHImageManager 同步获取200*200某张图片直接在cellForItem里面,性能还是不错的。估计得判断GIF,只能在用户点击之后,才能使用方法验证其属性。继续往下做吧。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2xx  成功  
200  正常;请求已完成。  
201  正常;紧接 POST 命令。  
202  正常;已接受用于处理,但处理尚未完成。  
203  正常;部分信息 — 返回的信息只是一部分。  
204  正常;无响应 — 已接收请求,但不存在要回送的信息。  
3xx  重定向  
301  已移动 — 请求的数据具有新的位置且更改是永久的。  
302  已找到 — 请求的数据临时具有不同 URI。  
303  请参阅其它 — 可在另一 URI 下找到对请求的响应,且应使用 GET 方法检索此响应。  
304  未修改 — 未按预期修改文档。  
305  使用代理 — 必须通过位置字段中提供的代理来访问请求的资源。  
306  未使用 — 不再使用;保留此代码以便将来使用。  
4xx  客户机中出现的错误  
400  错误请求 — 请求中有语法问题,或不能满足请求。  
401  未授权 — 未授权客户机访问数据。  
402  需要付款 — 表示计费系统已有效。  
403  禁止 — 即使有授权也不需要访问。  
404  找不到 — 服务器找不到给定的资源;文档不存在。  
407  代理认证请求 — 客户机首先必须使用代理认证自身。  
415  介质类型不受支持 — 服务器拒绝服务请求,因为不支持请求实体的格式。  
5xx  服务器中出现的错误  
500  内部错误 — 因为意外情况,服务器不能完成请求。  
501  未执行 — 服务器不支持请求的工具。  
502  错误网关 — 服务器接收到来自上游服务器的无效响应。  
503  无法获得服务 — 由于临时过载或维护,服务器无法处理请求。

遇到一个问题,就是字符里面出现\r\n、\r、\n、\t等特殊字符,做法是将其replace成\r\n、\r、\n、\t、,没有其他做法了,,特殊的是,\r\n需要最先被替换

// 一列数:-1,2,3,10,15,26…n,写一个方法计算第n个数的值

答案:
3->1
7->5
11->?
?应该是9
然后接下去是
隔下去数是加15

1
2
3
4
5
6
7
8
9
10
11
12
13
BOOL needDescount = NO;
int increaseCount = 4;
int totalNum = -1;
while (true) {
if (needDescount) {
increaseCount -=2;
needDescount = YES;
}else{
increaseCount +=4;
needDescount = NO;
}
totalNum +=increaseCount;
}

IOS-- UIView中的坐标转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// 将像素point由point所在视图转换到目标视图view中,返回在目标视图view中的像素值
- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view;
// 将像素point从view中转换到当前视图中,返回在当前视图中的像素值
- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view;

// 将rect由rect所在视图转换到目标视图view中,返回在目标视图view中的rect
- (CGRect)convertRect:(CGRect)rect toView:(UIView *)view;
// 将rect从view中转换到当前视图中,返回在当前视图中的rect
- (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view;

例把UITableViewCell中的subview(btn)的frame转换到 controllerA中

// controllerA 中有一个UITableView, UITableView里有多行UITableVieCell,cell上放有一个button
// 在controllerA中实现:
CGRect rc = [cell convertRect:cell.btn.frame toView:self.view];

CGRect rc = [self.view convertRect:cell.btn.frame fromView:cell];
// 此rc为btn在controllerA中的rect

或当已知btn时:
CGRect rc = [btn.superview convertRect:btn.frame toView:self.view];

CGRect rc = [self.view convertRect:btn.frame fromView:btn.superview];