Я хочу, чтобы изображение в моем UIImageView было нам другим файлом изображения, который обрезан, чтобы правильно заполнить ландшафтный режим при изменении ориентации от портрета к ландшафту.Весь следующий код определен в классе, который расширяет UIViewController
.
Следующая функция определенно вызывается, когда телефон вращается, потому что моя функция printf
печатает на выход.
- (void) traitCollectionDidChange: (UITraitCollection *) previousTraitCollection {
[super traitCollectionDidChange: previousTraitCollection];
if ((self.traitCollection.verticalSizeClass != previousTraitCollection.verticalSizeClass)
|| (self.traitCollection.horizontalSizeClass != previousTraitCollection.horizontalSizeClass)) {
printf("Orientation Change!\n");
UIImage * newImage = [UIImage imageNamed: @"landscape-image"];
[self.imageView setImage:newImage];
}
}
Я определил свойство imageView
в моем файле .h следующим образом:
@property (nonatomic, nonnull, readonly) UIImageView * imageView;
И я инициализирую imageView следующим образом:
UIImage * image = [UIImage imageNamed:@"portrait-image"];
UIImageView * _imageView = [[UIImageView alloc] initWithImage:image];
_imageView.contentMode = UIViewContentModeScaleAspectFill;
_imageView.translatesAutoresizingMaskIntoConstraints = NO;
[pageView addSubview:_imageView];
Это не работает для меня, хотя.Когда я меняю ориентацию, изображение imageView остается тем же и увеличивается, как обычно.Поскольку при вращении телефона вызывается функция traitCollectionDidChange
, я предполагаю, что проблема заключается в том, как я меняю изображение.Я относительно новичок в разработке для iOS, поэтому мне может не хватать чего-то важного для обновления UIImageViews.Любая помощь приветствуется.