【发布时间】:2016-06-09 21:19:32
【问题描述】:
我在情节提要中有一个 UIImageView,我将来自两个来源之一的 UIImage 存储到其中 - 我要么从网络加载图像,要么从本地资产目录加载图像。在所有情况下,通过检查,图像都是 48x48;图像视图恰好是 50x50。除了获取图像的代码(通过 Alamofire+AlamofireImage 或 UIImage:named),其余代码是相同的。加载时的图像,通过在 lldb 中的检查,两个来源都是 48x48。
我看到的行为是从网络加载的图像在图像视图中正确居中显示。但是,从资产目录加载的那些会向右移动,并且无论我在图像视图上设置的内容模式如何(我都尝试过),它们都会如此移动。整个局部图像被移动,使得左边缘不与图像视图的左边缘对齐 - 它大致位于中心。作为实验,我捕获了一张网络图像并将其存储在目录中;它在显示时也发生了偏移,这让我得出结论,问题不在于图像本身。
我的问题是:这两种情况可能有什么不同——我从网络加载的 48x48 图像与从资产目录加载的相同图像之间——导致本地加载的图像向右移动?
这是从资产目录加载的代码:
image = UIImage(named: iconString)
我也试过这个:
image = UIImage(named: iconString)?.imageWithAlignmentRectInsets(UIEdgeInsetsMake(0, 0, 0, 9))
但这并没有什么不同。
Alamofire/AlamofireImage 代码同样简单:
let request = Alamofire.request(.GET, url)
.validate()
.responseImage { response in completion?(result: response.result.value) }
最后,将图像放入 UI 的代码(这两个路径共有)是:
cell.imageView?.image = fcsts.first!.icon
我捕获文件并从资产目录中尝试的实验使我确信文件内容不是问题(尽管我愿意被显示错误!) - 某些原因导致本地加载的图像在视图中偏移。
该应用程序适用于 iPhone。我正在测试最新的 Xcode/iOS;该应用程序在 Swift 中。
【问题讨论】:
-
如果您提供 MCVE stackoverflow.com/help/mcve,我们很乐意为您提供帮助
-
UIImageView 在其父级中是如何被约束的?
-
图像视图是水平堆栈视图的最左侧元素,被限制为相同高度且位于左边缘。我在自己的脑海中苦苦挣扎,以了解其中任何一个如何相关-并不是说这不是一个好问题-仅仅是因为我能找到的唯一变量是图像是来自网络还是来自资产目录.将文件从网络上保存并放入资产目录中的实验似乎表明这是真的。就 MCVE 而言,我发现很难剥离应用程序以便以小形式进行测试,但会尝试。
-
想法如何在 MCVE 中包含故事板?
-
发布一个完整的精简项目。所有文件,包括故事板。人们经常使用 github,但您可以使用 Dropbox 或其他任何可行的方法。
标签: ios uiimageview uiimage alamofireimage