UIImageView 忽略了我的 ContentMode 设置
Posted
技术标签:
【中文标题】UIImageView 忽略了我的 ContentMode 设置【英文标题】:UIImageView is ignoring my ContentMode setting 【发布时间】:2012-03-13 05:36:28 【问题描述】:我在这里找到了一些其他答案,但它们似乎不适用/工作,所以我认为这可能是由于我的特定代码。
在我的应用程序中,我有一组 UIImages,它们实际上是 iPhone 相机拍摄的按比例缩小的照片。
我正在尝试在滚动视图中显示 UIImage,并正确缩放以显示整个图像。
这是我的代码:
scrollView.pagingEnabled = YES;
scrollView.clipsToBounds = NO;
CGFloat contentOffset = 0.0f;
pageControl.numberOfPages = [imageArray count];
pageControl.currentPage = 0;
for(UIImage *image in imageArray)
NSLog(@"image width = %f, image height = %f", image.size.width, image.size.height);
CGRect imageViewFrame = CGRectMake(contentOffset, 0, scrollView.frame.size.width, scrollView.frame.size.height);
UIImageView *imageView = [[UIImageView alloc] initWithFrame:imageViewFrame];
[imageView setImage:image];
[imageView setClipsToBounds:YES];
[imageView setContentMode:UIViewContentModeScaleAspectFill]; //I've tried others, but nothing seems to show the entire image
[scrollView addSubview:imageView];
[imageView release];
contentOffset += scrollView.frame.size.width;
[scrollView setContentSize:CGSizeMake(contentOffset, 0)];
请注意,这是一款面向纵向的应用,图片本身是纵向拍摄的。
NSLog 输出:
image width = 387.200012, image height = 518.400024
无论我将内容模式更改为什么,我在 UIImageView(滚动视图内)上看到的图像都是图像中心的放大图像。
我在这里做错了什么?谢谢!
【问题讨论】:
如果缩放图像,内容模式将无法工作。 【参考方案1】:答案就是我之前评论过的:UIImage 的缩放因子导致 ContentMode 不起作用。或者至少,让它看起来不起作用。
【讨论】:
【参考方案2】:您将 scrollView 的内容大小设置为 0,将 contentOffset 设置为宽度......这显然无法正常工作。
您必须将滚动视图的内容大小设置为图像的大小。这就是内容大小的含义——如果它大于滚动视图的大小,滚动视图会让你滚动查看不在屏幕上的部分。
您显然想要做的是将 imageView 的框架设置为屏幕宽度的 n 倍的 contentOffset,以便您可以水平滚动图像.因此,将 UIImageView 的大小设置为您的屏幕大小,它的原点为 (n * screenSize.width, 0),滚动视图的内容大小为 ((n+1)*screenSize。 width, screenSize.height),其中 n 为图像计数。
【讨论】:
实际上,滚动视图工作正常,只是图像视图不尊重内容模式。不过我发现了问题。 UIImage 的比例因子为 5,这是我在程序前面设置的。解决这个问题可以解决问题。谢谢!【参考方案3】:我知道这个问题已经被问到并得到了回答,但最近这个问题似乎还有另一个原因。从 tvOS 9.1 开始,设置 adjustsImageWhenAncestorFocused
似乎会使 contentMode
过时(一个可能的错误)UIImageView
。我希望这对某人有所帮助。
【讨论】:
以上是关于UIImageView 忽略了我的 ContentMode 设置的主要内容,如果未能解决你的问题,请参考以下文章
iOS7 忽略 UIImageView 的 backgroundColor?
为啥 Spring 忽略了我的 @DependsOn 注释?
ModalViewController 中的 UIImageView 正在忽略 ContentMode - iPhone