В чем разница между фреймом и границами UIImageView?
они оба CGRects
и моя программа ведет себя одинаково, когда я переключаю один на другой.
3 ответов
посмотреть наследник UIView для документации.
свойство frame указывает происхождение и размер представления в superview координирует. Происхождение система координат для всех видов в верхний левый угол.
свойство bounds указывает начало координат вида и его размер (содержимое представления может быть больше размера границ).
Frame и bounds похожи, но frame ссылается на другой объект (superview), а bounds ссылается на себя.
этот вопрос дает много отличной информации. Обязательно прочтите.
одна вещь, которую я укажу конкретно из другого ответа, - ваша программа будет вести себя так же иногда. Например, пока вы не повернуть. Из ответа Тристана
запуск этого код:
- (void)viewDidLoad {
[super viewDidLoad];
UIWindow *w = [[UIApplication sharedApplication] keyWindow];
UIView *v = [w.subviews objectAtIndex:0];
NSLog(@"%@", NSStringFromCGRect(v.frame));
NSLog(@"%@", NSStringFromCGRect(v.bounds));
}
вывод этого кода:
ориентация корпуса устройства является портретной
{{0, 0}, {768, 1024}} <- frame
{{0, 0}, {768, 1024}} <- bounds
ориентация корпуса устройства-пейзаж
{{0, 0}, {768, 1024}} <- frame
{{0, 0}, {1024, 768}} <- bounds
Так что да, ваша программа обычно будет вести себя одинаково, но не во всех случаях.