zoukankan      html  css  js  c++  java
  • ios至于理解锚

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

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

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

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

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

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


    那么什么是锚点呢?以下以一个样例来说明:
    比方要创建下面两个视图,蓝色视图左上角在坐标(5,4)处。而橙色视图右边和蓝色视图对齐,有一半的高度处于蓝色视图外面。


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

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


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

  • 相关阅读:
    bzoj 1210 [HNOI2004] 邮递员 插头dp
    与非 乱搞233
    USACO JAN14 奶牛冰壶运动 凸包+判定
    bzoj 2829 计算几何
    R
    bzoj 1592 dp
    [Usaco2007 Open]Fliptile 翻格子游戏 状压dp
    拯救莫莉斯 状压dp
    大暑假集训 第一阶段总结 233
    hdu 1693 Eat the Trees 插头dp
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4738551.html
Copyright © 2011-2022 走看看