锚点ios出现在少数地方,多数用在动画。

今天看了一部电影,以上所有关于锚,两年前锚这个概念看cocos2d当被接触的基本概念,当时我没怎么看,今天看了,刚刚好学习。

阅读blog,它是关于锚,像:

cocos2d里採用OpenGL ES坐标系。坐标原点在屏幕左下角。

而ios採用的是Quartz 2D坐标系,坐标原点在屏幕左上角。

在cocos2d和ios中分别把视图的坐标点设为(10,10),结果例如以下:

那么什么是锚点呢?以下以一个样例来说明:

比方要创建下面两个视图,蓝色视图左上角在坐标(5,4)处。而橙色视图右边和蓝色视图对齐,有一半的高度处于蓝色视图外面。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlqdW55dWFu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

依照ios标准的创建视图的写法能够这样写代码:

  1. UIView *blueView = [[UIView alloc] initWithFrame:CGRectMake(5, 4, W, H)];
  2. blueView.backgroundColor = [UIColor blueColor];
  3. [self.view addSubview:blueView];
  4. UIView *orangeView = [[UIView alloc] initWithFrame:CGRectMake(W-w, H-h/2, w, h)];
  5. orangeView.backgroundColor = [UIColor orangeColor];
  6. [blueView addSubview:orangeView];

能够看到创建视图时就要计算视图左上角的坐标,很麻烦。

而使用了锚点的代码能够这样写:

  1. UIView *blueView = [[UIView alloc] initWithSize:CGSizeMake(W, H)];
  2. [blueView setPosition:CGPointMake(5, 4) atAnchorPoint:CGPointMake(0, 0)];
  3. blueView.backgroundColor = [UIColor blueColor];
  4. [self.view addSubview:blueView];
  5. UIView *orangeView = [[UIView alloc] initWithSize:CGSizeMake(w, h)];
  6. [orangeView setPosition:CGPointMake(W, H) atAnchorPoint:CGPointMake(1, 0.5)];
  7. orangeView.backgroundColor = [UIColor orangeColor];
  8. [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)];
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

ios至于理解锚的更多相关文章

  1. iOS --runtime理解

    iOS~runtime理解 Runtime是想要做好iOS开发,或者说是真正的深刻的掌握OC这门语言所必需理解的东西.最近在学习Runtime,有自己的一些心得,整理如下,一为 查阅方便二为 或许能给 ...

  2. ios开发理解nil,Nil, NULL

    nil是一个对象指针为空,Nil是一个类指针为空,NULL是基本数据类型为空.这些可以理解为nil,Nil, NULL的区别吧. iOS剪切板 UIPasteboard *pasteboard = [ ...

  3. [iOS]深入理解GCD

    看到一篇很好的文章,本来想翻译的,但发现已经有人翻译了,遂简单整理了一下,方便阅读学习 新博客[wossoneri.com] 什么是GCD GCD(Grand Central Dispatch)是li ...

  4. iOS Runloop理解

    一.RunLoop的定义 当有持续的异步任务需求时,我们会创建一个独立的生命周期可控的线程.RunLoop就是控制线程生命周期并接收事件进行处理的机制. RunLoop是iOS事件响应与任务处理最核心 ...

  5. iOS - 详细理解KVC与KVO

    详细理解KVC与KVO 在面试的时候,KVC与KVO有些时候还是会问到的,并且他们都是Objective C的关键概念,在这里我们先做一个简单地介绍: (一)KVC: KVC即指:NSKeyValue ...

  6. 【读书笔记】iOS网络-理解错误源

    考虑一个字节是如何从设备发往运程服务器以及如何从远程服务器将这个字节接收到设备,这个过程只需要几百毫秒时间,不过确要求网络设备都能正常工作才行.设备网络和网络互联的复杂性导致了分层网络的产生.分层网络 ...

  7. iOS 深入理解RunLoop

    RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理.之后会介绍一下在 iOS 中,苹果是如何利 ...

  8. iOS工程结构理解

    iOS开发中关于工程结构有三个关键部分,分别是:Targets,projects 和 workspaces. Targets指定了工程或者库文件如何编译,包括building setting,comp ...

  9. iOS runLoop 理解

    目录 概述 run loop modes 一.概述 run loop叫事件处理循环,就是循环地接受各种各样的事件.run loop是oc用来管理线程里异步事件的工具.一个线程通过run loop可以监 ...

随机推荐

  1. Struts2 学习第一步准备工作

    第一步:安装下载MyEclispe10 对于MyEclispe的下载安装就不再详述了. 第二步:下载Struts-2.3.15 Struts-2.3.15下载地址: http://struts.apa ...

  2. 什么是gulp?

    gulp初涉 1.什么是gulp? gulp是前端开发过程中一种基于流的代码构建工具,是自动化项目的构建利器:它不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用 ...

  3. Python数据结构-元祖

    print()) print() #等价于: print('Tom is %d'%(5))

  4. 第一个Python程序的Hello Python,竟然有问题

    print 'hello python' 运行时显示:SyntaxError: invalid syntax 解决办法: 这应该是版本的问题,Python2的话直接就可以输出,但是到了Python3需 ...

  5. centos安装Chromium

    1. Change root user Shell su - ## OR ## sudo -i 0 1 2 3 4   su - ## OR ## sudo -i   2a. Install NCSU ...

  6. poj3468(线段树)

    题目连接:http://poj.org/problem?id=3468 线段树功能:update:成段增减 query:区间求和. 分析:需要用到延迟标记(或者说懒惰标记),简单来说就是每次更新的时候 ...

  7. 三点半们耐热i哦好家哦i囧囧【

    http://pan.baidu.com/share/link?shareid=3011665141&uk=338692646&third=15                http ...

  8. hdu3709(数位dp)

    求区间[l,r]内有多少个数的满足:   选一个位为中点,是的左边的数到该位的距离等于右边的位到该位的距离. 比如4139  选择3位中点, 那么左边的距离是 4 * 2 + 1 * 1 , 右边的距 ...

  9. WPF对于xml的简单操作(下下)插入节点并排序

    正如T所说,下下,这个方法不堪入目, ̄□ ̄|| 贴上再说 //先搞个struct声明 private struct datastruct { public string x; public strin ...

  10. (七)unity4.6Ugui中国教程文档-------摘要-UGUI Auto Layout

    大家好,我是太阳广东. 转载请注明出处:http://write.blog.csdn.net/postedit/38922399 更全的内容请看我的游戏蛮牛地址:http://www.unityman ...