В чем разница между фреймом и границами 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

Так что да, ваша программа обычно будет вести себя одинаково, но не во всех случаях.


пожалуйста, перейдите по этой ссылке.Надеюсь, это поможет вам.

  1. http://www.slideshare.net/profmido/05-views