删除UIView'来自superLayer的后备层

时间:2018-02-25 10:13:43

标签: ios objective-c uiview calayer

-(void) testLayer {

    UIView *parent = [UIView new];
    UIView *subview1 = [UIView new];
    UIView *subview2 = [UIView new];

    [parent addSubview:subview1];
    [parent addSubview:subview2];

    XCTAssertTrue(subview1.superview != nil);

    XCTAssertTrue([parent.subviews count] == 2);

    [subview1.layer removeFromSuperlayer];

    XCTAssertTrue(subview1.superview == nil);


    XCTAssertTrue([parent.subviews count] == 1); //This test case failing

}

有人可以解释为什么最后一个测试用例失败了吗?我必须在这里遗漏一些基本的东西。

我知道[subview1 removeFromSuperview]是从superView中删除它的正确方法,但我很想知道幕后发生了什么。

我的困惑是因为subview1.superview在执行[subview1.layer removeFromSuperlayer]后为零,但子视图数组仍然包含两个子视图。

0 个答案:

没有答案