2014-11-06 86 views
0

請參閱下面的設置花的截圖。花卉圖像已從資產目錄正確加載,當應用程序在各種模擬器上運行時,將爲每個設備分配正確的像素分辨率。我的問題是如何讓每個設備上的花朵圖像縮放(大小適合)相同? 我已經學會了如何使用約束和幀圖像以不同的位置位置,但圖像不能準確地磅秤 - 請參閱第一張圖 enter image description hereXcode 6 UIImageView無法正確縮放

下面的圖片是一個模擬了什麼,我希望能夠做到(每個設備上正確縮放花圖像)

enter image description here

回答

2

從你的模型來看,它看起來像你想要圖像填充一半寬度,並保持其正方形的高寬比來確定它的高度。解決這個問題的一種方法是使用AutoLayout創建左側的UIImageView和正確的佔位符(空白)視圖。將左視圖固定到父視圖的左邊緣,將右視圖固定到右邊緣,然後將它們設置爲彼此0像素。然後在它們上設置一個相等的寬度約束。最後,控制將圖像視圖拖放到自身,並且可以選擇寬高比 - 並假定在IB中,寬度和高度相同,則它將保持平方。如果你需要,添加一個相等的高度約束將給另一個視圖所需要的高度。

enter image description here

enter image description here Placeholder View Constraints

這給你一個左圖像認爲是50%,與你的模式設置爲看點健身或看點填充,它應該給你在你的實體模型的結果。如果您的圖像不是正方形,請務必檢查您的UIImageView的剪輯子視圖以防止出現溢出。

+0

感謝Kleezy。你的例子可行,但對我來說,看起來有點笨拙,有空間持有者的觀點。我目前在appStore上有一個應用程序,其中有4個圖像在所有設備上都可以正確縮放。用多個storyBoards很容易做到。現在只有一個storyBoard,看起來好像更容易在代碼中以編程方式進行(我真的錯過了多個storyBoards) – pete 2014-11-06 11:52:05

+0

那麼,通過自動佈局 - 您需要_something_來填充空間。我假設你的觀點不僅僅是那個形象 - 所以也許'佔位符'最終不會成爲佔位符。順便說一句 - Spacer的意見實際上建議在這裏:https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/AutoLayoutbyExample/AutoLayoutbyExample.html – kleezy 2014-11-06 23:58:39

0

真正的問題是,你的目標是不明確的。按比例縮小什麼?屏幕有一個高度和寬度。您無法對兩者進行縮放,因爲這會扭曲圖像(因爲不同的設備具有不同的總體寬高比)。因此,您必須選擇一個可擴展到的維度。

從你的樣機判斷,我猜你想要的是相對於高度來縮放。如果是,則給圖像視圖一個高度約束,該高度約束是其超級視圖高度的固定分數。它看起來在你的模型中大概是0.25,但是你必須注意你認爲是好的一部分。

現在,如果圖像視圖的內容模式是Aspect Fit(或Aspect Fill),則圖像將隨圖像視圖一起更改其高度,而不會扭曲寬高比。

但是,如果要使圖像視圖的其他維度(此處爲寬度)爲高度的固定分數,例如使圖像視圖的寬高比與寬高比相同圖像的比例。原因在於,否則圖像可能最終集中在圖像視圖中,即使圖像視圖本身不會觸摸頂部或左側。

0
CGFloat screen_width = [[UIScreen mainScreen] bounds].size.width; 
your_imageview.frame = CGRectMake(0, 0, screen_width/2, screen_width/2); 
+0

我已經嘗試過,並沒有區別。 – pete 2014-11-06 09:54:50