Per Apple Documentation, вот связь между представлением в рамы, рамки и центра:
Хотя вы можете изменить рамку, границы и свойства центра независимо от других, изменения одного свойства влияют другие следующими способами:
- при установке свойства кадра, значение размера в изменении границ собственности в соответствии с новым размером кадра прямоугольника. Значение
Значение в центре похоже на эту страницу аналогично новому
центральная точка прямоугольника рамки.
- Когда вы устанавливаете свойство центра, значение начала в кадре изменяется соответствующим образом.
- Когда вы задаете размер свойства bounds, значение размера в свойстве frame изменяется в соответствии с новым размером прямоугольника границ.
Таким образом, ответ на ваш вопрос, изменение X, Y позиции на границах Посмотреть должен не влияет на кадр. Большая часть случаев начинается с (0,0). Изменение высоты или ширины на отрицательные значения позволило бы происхождение границ идти отрицательно.
EDIT: Ответ на вопрос OP - Нет, изменение положения границ никак не повлияет на кадр. Поскольку границы относятся к собственной системе координат зрения, изменение X, Y в системе самоопределения не изменило бы положение в системе координат супервизора.
Вы можете попробовать с помощью двух пользовательских представлений, как это:
UIView* view1 = [[UIView alloc] initWithFrame:CGRectMake(50.0f, 100.0f, 150.0f, 150.0f)];
view1.backgroundColor = [UIColor redColor];
NSLog(@"view1.bounds = %@", NSStringFromCGRect(view1.bounds));
NSLog(@"view1.frame = %@", NSStringFromCGRect(view1.frame));
UIView* view2 = [[UIView alloc] initWithFrame:CGRectInset(view1.bounds, 20.0f, 20.0f)];
view2.backgroundColor = [UIColor yellowColor];
NSLog(@"view2.bounds = %@", NSStringFromCGRect(view2.bounds));
NSLog(@"view2.frame = %@", NSStringFromCGRect(view2.frame));
NSLog(@"view1.bounds = %@", NSStringFromCGRect(view1.bounds));
NSLog(@"view1.frame = %@", NSStringFromCGRect(view1.frame));
NSLog(@"view2.bounds = %@", NSStringFromCGRect(view2.bounds));
NSLog(@"view2.frame = %@", NSStringFromCGRect(view2.frame));
[view1 addSubview:view2];
А затем изменить подвид связанный, как это:
CGRect frame = view2.bounds;
frame.origin.x += 20.0f;
frame.origin.y += 20.0f;
view2.bounds = frame;
Изменение границ не будет влиять на кадр вообще. И оба мнения будут выглядеть одинаково на экране:


И, наконец, попробовать, изменив границы родительского вида, чтобы увидеть внизу экрана:
CGRect frame = view1.bounds;
frame.origin.x += 20.0f;
frame.origin.y += 20.0f;
view1.bounds = frame;

Это большой вопрос. Почему бы не запустить его, установить Brakpoint и посмотреть? –
Спасибо! Я запустил его, но рамка не изменилась, просто хотелось убедиться, правильно ли я понял концепцию. – Smashkon