美文网首页iOS开发技术分享
CALayer- bounds、position、anchorP

CALayer- bounds、position、anchorP

作者: Sunnyxi | 来源:发表于2016-09-07 14:47 被阅读71次

    CALayer

    每个UIView都有一个根CALayer,UIView本身没有显示的功能,是靠CALayer进行绘制的效果,然而CALayer不能响应事件。

    好多动画效果都是通过CALayer来实现的,非根CALayer修改其属性都包含着隐式动画,例如修改背景颜色。根CALAyer把这个效果给去掉了。

    CALayer * layer = [CALayer layer];
    layer.backgroundColor = [UIColor redColor].CGColor;
    [self.view.layer addSublayer:layer];
    
    layer.bounds = CGRectMake(0, 0, 100, 100); //控制大小
    layer.position = CGPointMake(100, 100); //控制x,y,设置在父视图中的位置,以父视图左上角为原点(0,0)
    layer.anchorPoint = CGPointMake(0, 0); //定点,锚点,决定CALayer身上的哪个点会在position属性所指的位置,以自己的左上角为原点(0,0),取值在[0,1]
    

    下面这个动画效果即可通过CALayer来实现。


     _moreView.layer.anchorPoint = CGPointMake(0.9, 0);
     _moreView.layer.bounds = CGRectMake(0, 0, 155, 212);
     _moreView.layer.position = CGPointMake(mScreenWidth - 30, 44 + 10);
    
           
       
    if (self.moreView.hidden) { //显示
        self.moreView.hidden = NO;
        self.moreView.transform = CGAffineTransformMakeScale(0.0001, 0.001);
        [UIView animateWithDuration:0.3 animations:^{
            self.moreView.transform = CGAffineTransformMakeScale(1.0, 1.0);
        }];
    } else { //隐藏
        
        [UIView animateWithDuration:0.3 animations:^{
            
            self.moreView.transform = CGAffineTransformMakeScale(0.0001, 0.001);
            
        } completion:^(BOOL finished) {
            if (finished) {
                self.moreView.hidden = YES;
            }
            
        }];
    }

    相关文章

      网友评论

        本文标题:CALayer- bounds、position、anchorP

        本文链接:https://www.haomeiwen.com/subject/ivmjettx.html