簡體   English   中英

UIImageView中的UIImage位置移動

[英]UIImage position shifting in UIImageView

我在情節提要中有一個UIImageView,我從其中兩個來源之一存儲UIImages-我從網絡或從本地資產目錄加載圖像。 在所有情況下,通過檢查,圖像均為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中。

該問題被證明是由表視圖細胞正在做自動布局的一個功能,如所討論這里 我已將故事板中圖標的視圖大小顯式設置為50x50,因此表單元格類中的此覆蓋為我解決了此問題:

override func layoutSubviews() {
    super.layoutSubviews()
    if let rect = self.imageView?.frame {
        var newRect = rect
        newRect.origin = CGPointMake((50-rect.size.width)/2, (50-rect.size.height)/2)
        self.imageView!.frame = newRect
    }
}

對於為何將圖像從網絡上復制到本地文件,我將無法進行重新定位,也無法解釋為什么即使所涉及的所有尺寸都是對稱的,錯誤的定位也只能在水平方向上進行解釋。 (是的,如果我僅調整X位置,它確實起作用;調整Y只是偏執狂。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM