繁体   English   中英

UIImageView忽略了我的ContentMode设置

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM