因为添加到view.layer 的layer 会直接添加到如下数组中:
屏幕快照 2019-12-02 上午9.56.34.png
这个数组是不可变数组
你要删除添加的layer,遍历这个数组,用removeFromSuperlayer
这个方法 会导致奔溃,因为这个不是可变数组
想要删除,用下面正确的方法
NSMutableArray<CALayer *> *mutableArray = [view.layer.sublayers mutableCopy];
for (CALayer *layer in mutableArray) {
if ([layer isKindOfClass:[CAGradientLayer class]]) {
[mutableArray removeObject:layer];
// [layer removeFromSuperlayer]; 防止用这个用法
break;
}
}
view.layer.sublayers = array;
这样不会导致奔溃