UIImageView为什么只显示/渲染已加载图像的一半?

4
当通过应用程序导航时,标题具有一个徽标,根据部分加载标题图像。现在,测试时我总是使用相同的图像文件,但是...调用相同的方法来更改uiimageview的图像(将uiimageview作为参数传递),有时仅呈现图像的一半...起初我认为可能是框架或界限把它裁剪掉了,但设置clipstobounds,backgroundcolor为蓝色,并记录框架/边界显示,据我所知并不是这样。这种情况偶尔会发生,因此相同的代码有时会加载完整的图像,有时只有一半。

这是我正在使用的代码:

rightLogo.Image = null;
rightLogo.ClipsToBounds = false;
rightLogo.BackgroundColor = UIColor.Blue;
UIImage imageTest = UIImage.FromFile (path);
if (imageTest != null)
    imageView.Image = imageTest;

图像视图的框架/边界始终设置为90,根据日志所述,图像高度为180(针对Retina),内容模式设置为缩放方面适合...
此外: 我发现将其设置为不缩放图像将始终显示完整的图像。想知道是否与缩放方面适合/全屏有关(已尝试过两者)。我已在运行ios7的iPad 3和运行ios6的iPad 2以及模拟器上进行了测试。

图像在文件系统中是如何存储的? - jhk
图像在运行时下载(除非文件已经存在),使用File.Open(filePath, FileMode.Create);打开文件流。 - user3661140
你是否考虑过使用第三方库,例如https://github.com/rs/SDWebImage?它内置了一些选项来处理下载图像时的中断。 - jhk
唯一的问题是一旦它被下载后就无法再打开流,然而有时即使使用同一个文件,它也只会偶尔加载其中一半... - user3661140
1个回答

3

在 Xcode 导航栏中选择 "Product",然后选择 "Clean" 或按下 UP 键 + Command + K。

接下来从模拟器中删除应用程序。

这应该可以帮助它正确地运行。

或者

在故事板中,选择您的 UIImage,并在 "Size Inspector" 中进入内容压缩阻力,将水平和垂直都改为 100。


抱歉,这在模拟器和设备上都会发生,两者都进行了干净的运行。应用程序加载,它下载文件并更新标题。图像看起来很好,导航到屏幕2时只显示一半,转到屏幕3时看起来很好,返回屏幕2时就正常了。随着您浏览屏幕,有时它会正常,有时则不会。 - user3661140
你使用的是什么设备?你能否编辑你的帖子并展示你的方法或更多的代码以供参考?你使用了哪个segue,是否使用了prepareForSegue方法? - App Dev Guy
请检查我关于压缩设置的修改建议。 - App Dev Guy
抱歉,我已经回家了。虽然我没有使用自动布局,但我的自适应大小设置允许它在高度上拉伸。移除这个设置似乎解决了问题。谢谢! - user3661140
很高兴我能帮忙 :-) - App Dev Guy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接