UIWindow: frame == bounds :: ==> (0, 0, windowWidth, windowHeight)
subview: frame :: ==> (100, 100, 200, 200) в границах UIWindows [UIWindows cordinate space.]
Когда вы делаете это:
subview.bounds = CGRectMake(50, 50, 200, 200);
Вы говорите, что кадр подпредставления подпредставления будет начинаться с (50, 50, 200, 200), если подпредставление этого подпредставления [subsubview] должно было правильно покрывать подпредставление.
Точно так же, как вам нужно указать рамку вашего подпредставления (0,0, windowWidth, windowHeight), чтобы правильно покрыть окно вашим подпредставлением.
Дело в том, что фрейм SUBVIEWS зависит от его непосредственной системы SUPINVIEWS. Локальная / внутренняя сердечная система непосредственного супервизии - это ее границы.
Подходя к вопросу, почему подпредставление вверх и влево на 50 50 баллов.
subview.bounds = CGRectMake(50, 50, 200, 200);
subsubview = [[UIView alloc] initWithFrame:CGRectMake(0, 0,100,100)];
сравнить между (0,0) и (50,50).
Мы сказали, что локальное / внутреннее пространство корвината subview должно быть (50,50, 200, 200)
Затем мы добавили подпредставление subview [subsubview] в (0,0) внутри представления subview , которое начинается в (50,50).
В этом случае (0,0) находится слева вверху от (50,50). Вот почему это произошло.
Если вы не понимаете, что это значит даже сейчас, то внимательно посмотрите и медленно нарисуйте несколько прямоугольников в блокноте. Сложно понять все правильно.