ios至于理解锚
2015-08-18 10:06
543 查看
锚点ios出现在少数地方,多数用在动画。
今天看了一部电影,以上所有关于锚,两年前锚这个概念看cocos2d当被接触的基本概念,当时我没怎么看,今天看了,刚刚好学习。
阅读blog,它是关于锚,像:
cocos2d里採用OpenGL ES坐标系。坐标原点在屏幕左下角。
而ios採用的是Quartz 2D坐标系,坐标原点在屏幕左上角。
在cocos2d和ios中分别把视图的坐标点设为(10,10),结果例如以下:
那么什么是锚点呢?以下以一个样例来说明:
比方要创建下面两个视图,蓝色视图左上角在坐标(5,4)处。而橙色视图右边和蓝色视图对齐,有一半的高度处于蓝色视图外面。
依照ios标准的创建视图的写法能够这样写代码:
能够看到创建视图时就要计算视图左上角的坐标,很麻烦。
而使用了锚点的代码能够这样写:
可见,使用锚点省去了苦逼的计算过程。当然了,锚点也是针对子视图去设计的。锚点掌握好了,我们就不用再去计算x,y坐标了。
就拿上面这个样例分析一下吧:
把鸟瞰图蓝色view的左边点(W,H)作为自身的锚点(1,0.5)【注意:锚点是在自身上找,这个点一一映射的有一个父view的坐标,能够通过这两个值来计算子视图的view.frame.origin】.
好好理解上句话,锚点的坐标范围例如以下:
这是在Quartz
2D坐标系中得锚点。
以下看一下代码中把父视图的点作为自身锚点的方法。
今天看了一部电影,以上所有关于锚,两年前锚这个概念看cocos2d当被接触的基本概念,当时我没怎么看,今天看了,刚刚好学习。
阅读blog,它是关于锚,像:
cocos2d里採用OpenGL ES坐标系。坐标原点在屏幕左下角。
而ios採用的是Quartz 2D坐标系,坐标原点在屏幕左上角。
在cocos2d和ios中分别把视图的坐标点设为(10,10),结果例如以下:
那么什么是锚点呢?以下以一个样例来说明:
比方要创建下面两个视图,蓝色视图左上角在坐标(5,4)处。而橙色视图右边和蓝色视图对齐,有一半的高度处于蓝色视图外面。
依照ios标准的创建视图的写法能够这样写代码:
UIView *blueView = [[UIView alloc] initWithFrame:CGRectMake(5, 4, W, H)]; blueView.backgroundColor = [UIColor blueColor]; [self.view addSubview:blueView]; UIView *orangeView = [[UIView alloc] initWithFrame:CGRectMake(W-w, H-h/2, w, h)]; orangeView.backgroundColor = [UIColor orangeColor]; [blueView addSubview:orangeView];
能够看到创建视图时就要计算视图左上角的坐标,很麻烦。
而使用了锚点的代码能够这样写:
UIView *blueView = [[UIView alloc] initWithSize:CGSizeMake(W, H)]; [blueView setPosition:CGPointMake(5, 4) atAnchorPoint:CGPointMake(0, 0)]; blueView.backgroundColor = [UIColor blueColor]; [self.view addSubview:blueView]; UIView *orangeView = [[UIView alloc] initWithSize:CGSizeMake(w, h)]; [orangeView setPosition:CGPointMake(W, H) atAnchorPoint:CGPointMake(1, 0.5)]; orangeView.backgroundColor = [UIColor orangeColor]; [blueView addSubview:orangeView];
可见,使用锚点省去了苦逼的计算过程。当然了,锚点也是针对子视图去设计的。锚点掌握好了,我们就不用再去计算x,y坐标了。
就拿上面这个样例分析一下吧:
把鸟瞰图蓝色view的左边点(W,H)作为自身的锚点(1,0.5)【注意:锚点是在自身上找,这个点一一映射的有一个父view的坐标,能够通过这两个值来计算子视图的view.frame.origin】.
好好理解上句话,锚点的坐标范围例如以下:
这是在Quartz
2D坐标系中得锚点。
以下看一下代码中把父视图的点作为自身锚点的方法。
- (void)setPosition:(CGPoint)point atAnchorPoint:(CGPoint)anchorPoint { CGFloat x = point.x - anchorPoint.x * self.width; CGFloat y = point.y - anchorPoint.y * self.height; [self setOrigin:CGPointMake(x, y)]; }
相关文章推荐
- Xcode7真机调试iOS应用程序
- iOS 6.0之后支持一个页面横屏的方法
- iOS 常见系统库作用以及KVC和KVO的关系
- iOS - tips 持续更新
- iOS开发 -- loadView方法
- iOS 绘制1像素的线
- iOS中纯手工图片浏览器
- IOS中的TOM(解决缓存,图片加载)
- iOSQuartz2D-04-手动剪裁图片并保存到相册
- iOS单元测试1
- iOS开发 -- 屏幕旋转
- iOS Facebook SDK
- 关于@synchronized(self)的用法
- iOS开发之小技巧积累
- 在mac上为ios编译mono
- 低成本oc开发的最终解决方案——黑苹果
- 9秒学院-iOS开发新手需必备
- 分享一些学习iOS的开发心得
- iOS编程:学习篇(十一)
- iOS9适配