我在集合視圖中顯示圖像網格(3行x 3列)。每個圖像都是一個正方形,其寬度被確定爲collectionView寬度的1/3。集合視圖固定在mainView的左右邊距上。當不知道運行時的大小時提供正確的圖像大小
由於各種iPhone的屏幕尺寸不同,我不知道在運行時圖像的高度和寬度是多少。例如,每個圖像在5S上的顯示像素爲100x100,而在6+上爲130x130。我被建議提供與屏幕尺寸完全一致的圖像。縮小圖像時,較大的圖像往往會變得像素化並且太尖銳。如何解決這個問題?
我在集合視圖中顯示圖像網格(3行x 3列)。每個圖像都是一個正方形,其寬度被確定爲collectionView寬度的1/3。集合視圖固定在mainView的左右邊距上。當不知道運行時的大小時提供正確的圖像大小
由於各種iPhone的屏幕尺寸不同,我不知道在運行時圖像的高度和寬度是多少。例如,每個圖像在5S上的顯示像素爲100x100,而在6+上爲130x130。我被建議提供與屏幕尺寸完全一致的圖像。縮小圖像時,較大的圖像往往會變得像素化並且太尖銳。如何解決這個問題?
通常的解決方案是爲單,雙和三分辨率屏幕提供三個版本,並在圖像首次需要時通過將drawInRect
重繪爲圖形上下文來實時縮小尺寸。
由於各種iPhone的屏幕尺寸不同,我不知道在運行時圖像的高度和寬度是多少。例如,每個圖像在5S上的顯示像素爲100x100,但在6+上的顯示像素數爲130x130。
好的,所以你的第一句話是謊言。第二句話證明你做知道尺寸是在不同的屏幕尺寸上。顯然,如果我告訴你一個設備的名稱,你可以告訴我你認爲圖像大小應該是什麼。因此,如果您不希望在運行時縮放較大的圖像,因爲您不喜歡最終的質量,只需爲每個設備提供正確尺寸和分辨率的實際圖像,然後在實際設備類型上使用正確的圖像即可發現自己在跑步。
如果您的圖像是使用光柵繪圖工具創建的照片或光柵類型圖像,那麼您需要將原始圖像縮放到所需的大小。您可以在iOS中運行時執行此操作,也可以使用可爲您提供更好縮放結果的工具創建前端設置。不幸的是,唯一完美的形象將是原創,其他一切都是對真相的歪曲。
對於圖標,唯一準確的渲染解決方案是使用矢量圖形。像Adobe Illustrator這樣的工具可以讓你創建圖像,你可以縮放到不同的尺寸而不會失去清晰度。不幸的是,這仍然讓你在前面生成圖像。你可以使用大多數工具編寫這一代的腳本,並且假設你的圖片都是正方形的,那麼所需的總數並不是很大。最多你需要iPhone 3(4/5是相同的寬度,6和6+)和2 iPad(@ 1爲迷你/ ipad1和@ 2爲視網膜)。
雖然iOS沒有直接支持我知道的矢量圖像渲染,但有一些第三方工具。 http://www.paintcodeapp.com/是一個例子,它似乎可讓您導入矢量圖像或繪製矢量圖像,然後生成圖像代碼以在您的應用中運行。這種工具會給你想要的東西,因爲這些圖像現在是按照你在運行時選擇的比例繪製的矢量圖。但99美元。
還有SVGKit(https://github.com/SVGKit/SVGKit),但不知道這是多麼好/壞。它似乎讓你只需從SVG文件加載和渲染直接。值得嘗試。所以總的來說,我認爲你要麼使用一個可以控制輸出的工具來生成相對較小的子集,在iOS中使用命中並讓它縮放圖像或使用第三方向量來渲染套件這會給你你想要的。
謝謝你停下來。我用一個小技巧來處理6 +/6s +屏幕尺寸。我提供了一些不同尋常的圖像尺寸:1x爲100x100,200x200爲2x,但使用390x390爲3x。我仍然需要處理6/6。可能只是通過查詢UIScreen的大小來做到這一點。 – brumbrum