![](/img/trans.png)
[英]UIImageView in ModalViewController is Ignoring ContentMode - iPhone
[英]UIImageView is ignoring my ContentMode setting
我在这里找到了其他答案,但是它们似乎并不适用/不起作用,因此我认为这可能是由于我的特定代码所致。
在我的应用中,我有一个UIImage数组,它们实际上是按比例缩小了iPhone相机拍摄的照片。
我正在尝试在scrollView中显示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
无论我将contentmode更改为什么,我看到的图像都显示在UIImageView上(在滚动视图内)是图像中心的放大图像。
我在这里做错了什么? 谢谢!
答案是我之前评论的内容:UIImage的缩放因子导致ContentMode无法正常工作。 或至少使它似乎不起作用。
我知道有人问过这个问题,但最近似乎又有另一个原因。 从tvOS 9.1开始 ,设置adjustsImageWhenAncestorFocused
似乎使UIImageView
contentMode
adjustsImageWhenAncestorFocused
(可能的错误)。 我希望这可以帮助别人。
您为scrollView设置了一个内容大小,高度为0, contentOffset为width ...显然不起作用。
您必须将滚动视图的内容大小设置为图像的大小。 这就是内容大小的含义-如果它大于滚动视图的大小,则滚动视图将让您滚动以查看屏幕上未显示的部分。
您显然想做的是将imageView的帧设置为屏幕宽度的n倍的contentOffset ,以便可以在图像中水平滚动。 因此,将UIImageView的大小设置为屏幕大小,其原点设置为(n * screenSize.width,0),滚动视图的内容大小设置为((n + 1)* screenSize.width,screenSize.height), n是图像计数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.