簡體   English   中英

如何從Xcode 8中的Assets.xcassets添加不同屏幕尺寸的圖像?

[英]How to add Images for different screen size from Assets.xcassets in Xcode 8?

我為登錄屏幕創建了不同大小的背景圖像。
我指的是蘋果鏈接https://developer.apple.com/ios/human-interface-guidelines/graphics/launch-screen/
但我沒有做Launch Screen,我只是想在Login屏幕上添加背景。

我想知道哪個是1x,2x和3x?

在此輸入圖像描述


另一個問題是當我創建圖像集時,應該將圖像大小拖到哪個位置。 我不知道那個。 或者我們只需要3張圖片(通用行)?
那么,景觀圖像怎么樣? 我應該把它放在哪里? 在此輸入圖像描述

我會創建以下尺寸:

蘋果手機:

  • @ 1x - 640 x 1136(iPhone SE)
  • @ 2x - 750 x 1334(iPhone 7,6S)
  • @ 3x - 1242 x 2208(iPhone 7 Plus,iPhone 6S Plus)

iPad的:

  • @ 2x - 2048 x 1536(iPad Air,Retina iPad第1代和第2代/第3代和第4代和Pad Mini第2代和第3代)

實際上,你需要為此編碼。

首先 ,您使用不同的名稱將圖像分別放在Assets中。

其次 ,使用以下代碼:

    var backgroundImageName = ""
    switch UIScreen.main.bounds.height {
        case 480:
            //for iPhone4s,
            backgroundImageName = "background_iPhone4s"
            break;
        case 568:
            //iPhone SE, iPhone5, iPhone 5s
            backgroundImageName = "background_iPhone5"
            break;
        case 667:
            //iPhone 6, 6s, 7
            backgroundImageName = "background_iPhone6"
            break;
        case 736:
            //iPhone 6 plus, 6s plus, 7 plus
            backgroundImageName = "background_iPhonePlus"
            break;
        default:
            break;
    }
    backgroundImageView.image = UIImage(named: backgroundImageName)

我贊同Yun CHEN,因為我認為最靈活的解決方案是為每個分辨率設置一個圖像集,從而避免在設備上執行圖像縮放。

根據設備的渲染系數(2倍,3倍等)(例如,4.7英寸iPhone上的2倍,作為iPhone 8),您也只需要將相應大小的圖像放入相應的設備中。例如,iPhone 8的圖像集僅需要2x圖像。

但請注意以下幾點:

  • UIScreen.main.bounds.height返回邏輯分辨率的高度- 即點 ,與UIScreen.main.nativeBounds.height相反,返回實際分辨率的高度- 即像素 (實際上,UIScreen.main.nativeBounds.height總是返回即使您在橫向模式下,設備在縱向模式下的像素高度也是如此。 您應該始終使用與實際分辨率匹配的圖像- 即像素 ,即使您檢查點。

  • 從iOS 8開始,無論您的設備處於縱向還是橫向模式,UIScreen.main.bounds.height都將返回不同的值 因此,如果要使用它來區分設備,則應檢查應用程序可以使用的所有值,並且每個值都應該有一個單獨的圖像集。

例如,對於在縱向和橫向模式下工作的應用程序:

    var backgroundImageName = ""
    if UIDevice().userInterfaceIdiom == .phone
    {
        switch UIScreen.main.bounds.height
        {
        case 812:   // 5.8" (iPhone X) (3x) (Portrait)
            backgroundImageName = "background_1125x2436"
        case 736:  // 5.5" (iPhone 8+, 7+, 6s+, 6+) (3x) (Portrait)
            backgroundImageName = "background_1242x2208"
        case 414:  // 5.5" (iPhone 8+, 7+, 6s+, 6+) (3x) (Landscape)
            backgroundImageName = "background_2208x1242"
        case 667:  // 4.7" (iPhone 8, 7, 6s, 6) (2x) (Portrait)
            backgroundImageName = "background_750x1334"
        case 375:
            // 5.8" (iPhone X) (3x) (Landscape)
            if (UIScreen.main.bounds.width == 812) {
                backgroundImageName = "background_2436x1125"
            }
            // 4.7" (iPhone 8, 7, 6s, 6) (2x) (Landscape)
            else if (UIScreen.main.bounds.width == 667) {
                backgroundImageName = "background_1334x750"
            }
        case 568:  // 4.0" (iPhone SE, 5s, 5c, 5) (2x) (Portrait)
            backgroundImageName = "background_640x1136"
        case 320:  // 4.0" (iPhone SE, 5s, 5c, 5) (2x) (Landscape)
            backgroundImageName = "background_1136x640"
        default:
            break
        }
    }
    else if UIDevice().userInterfaceIdiom == .pad
    {
        switch UIScreen.main.bounds.height
        {
        case 1366:  // 12.9" (iPad Pro 12.9) (2x) (Portrait)
            backgroundImageName = "background_2048x2732"
        case 1112:  // 10.5" (iPad Pro 10.5) (2x) (Portrait)
            backgroundImageName = "background_1668x2224"
        case 834:  // 10.5" (iPad Pro 10.5) (2x) (Landscape)
            backgroundImageName = "background_2224x1668"
        case 1024:
            // 12.9" (iPad Pro 12.9) (2x) (Landscape)
            if (UIScreen.main.bounds.width == 1366) {
                backgroundImageName = "background_2732x2048"
            }
            // 9.7" & 7.9" (iPad Pro 9.7, iPad Air 2, iPad Air, iPad 4, iPad 3, iPad Mini 4, iPad Mini 3, iPad Mini 2) (2x) (Portrait)
            else if (UIScreen.main.bounds.width == 1366) {
                backgroundImageName = "background_1536x2048"
            }
        case 768:  // 9.7" & 7.9" (iPad Pro 9.7, iPad Air 2, iPad Air, iPad 4, iPad 3, iPad Mini 4, iPad Mini 3, iPad Mini 2) (2x) (Landscape)
            backgroundImageName = "background_2048x1536"
        default:
            break
        }
    }
    self.backgroundImageView.image = UIImage(named: backgroundImageName)

如果需要包含其他設備(例如Apple Watch),依此類推。

暫無
暫無

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

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