masksToBounds到底是何方神圣

新年第一天上班不知不觉就到了,今天刚到公司同事就问maskToBounds具体是做什么的?为什么cornerRadius都设置过圆角曲率了,还需要再设置maskToBounds(写过的代码这2项都是同时出现)???
  关于这个问题我给出了我的思路:默认情况下,cornerRadius只会影响背景颜色而不影响背景图片或子图层,必须得设置maskToBounds属性才会截取图层里面所有的东西。

效果如下:


masksToBounds到底是何方神圣_第1张图片
Simulator Screen Shot Feb 15, 2016, 09.28.53.png

** 左边的就是设置过cornerRadius和maskToBounds的,右边的仅设置过cornerRadius,未设置maskToBounds! **

测试核心代码如下(左边是subView1,右边是subView2,红色图层未设置cornerRadius和maskToBounds)

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var subView1: UIView!
    @IBOutlet weak var subView2: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        self.subView1.layer.cornerRadius = 20
        self.subView2.layer.cornerRadius = 20
        
        self.subView1.layer.masksToBounds = true
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

** 其中masksToBounds可在Interface Builder勾选Clip Subviews实现同样的效果。**

你可能感兴趣的:(masksToBounds到底是何方神圣)