美文网首页
masksToBounds

masksToBounds

作者: 不舍的追逐 | 来源:发表于2017-02-07 16:57 被阅读0次

    masksToBounds

    一、首先简单的说下UIView的CALayer.

    UIView之所以能显示在屏幕上,完全是因为它内部的一个图层,在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层

    @property(nonatomic,readonly,retain) CALayer *layer;

    当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView的显示。因此,通过操作这个CALayer对象,可以很方便地调整UIView的一些界面属性,比如:阴影、圆角大小、边框宽度和颜色等。

    总结:UIView本身不具备显示的功能,拥有显示功能的是它内部的图层。

    二、这里我们要讲的是masksToBounds

    如上面所说,我们可以对UIView设置它的圆角

    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 120, 120)];

    view.backgroundColor = [UIColor blackColor];

    view.layer.cornerRadius = 10;

    [self.view addSubview:view];

    这段代码会按照我们的预想出现圆角效果.

    但是当我们往view上面添加一个UILabel或者一个UIButton,或者给collectionView的item设置圆角时候就不管用了。下面的代码将不管用了

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, 0, 30, 30)];

    label.text = @"93";

    label.textAlignment = NSTextAlignmentCenter;

    label.backgroundColor =[UIColor redColor] ;

    label.layer.cornerRadius = 15;

    [view addSubview:label];

    这时候我们需要设置一个属性,才会达到效果

    cable.layer.masksToBounds=YES;

    其中masksToBoinds属性为YES时候,其作用是剪去子图层(UIImage)超出主图层(CALayer)的部分

    其中更加详细牛掰的底层解释,本人强烈推荐    牛人在这里

    相关文章

      网友评论

          本文标题:masksToBounds

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