【发布时间】:2019-02-13 00:29:49
【问题描述】:
我希望 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];
}
}
我在我的 .h 文件中定义了属性imageView,如下所示:
@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 的重要内容。任何帮助表示赞赏。
【问题讨论】:
标签: ios objective-c xcode