1. 程式人生 > >Launch Screen 在 iOS7/8 中的實現

Launch Screen 在 iOS7/8 中的實現

目前專案中需要解決的問題是:

  • 相容iOS7和iOS8,之前的版本不需要支援了
  • 實現相容3.5、4、4.7和5.5寸螢幕,豎屏的Lauch Screen

建立所需的PNG圖片

有關iPhone6/6+相關尺寸見這裡

需要如下尺寸圖片:

  • 用於iPhone6+的1242x2208,或者1080x1920,也就是Retina HD 5.5
  • 用於iPhone6的750x1334,也就是Retina HD 4.7
  • 用於4寸屏(iPhone5/5s)的640x1136,就是Retina 4
  • 用於3.5寸(iPhone4/4s)的640x960,就是2x

使用LaunchImage

使用LaunchImage,可以相容iOS7和iOS8。

因為iOS8也會呼叫LaunchScreen.xib

,所以我的做法是直接刪除它。就是這個檔案:

然後,在Images.xcassets中建立一個LaunchImage

需要在專案屬性裡,launch Images Source裡設定為LaunchImage

測試了一下:

  • iPhone6+使用的是Retina HD 5.5
  • iPhone6使用的是Retina HD 4.7
  • iPhone5s使用的是Retina 4
  • iPhone4s使用的是2x

使用LauchScreen.xib

這是Xcode6/iOS8的新功能,也就是說,這個步驟,是為了支援iOS8的,而不支援iOS7。其實在目前的專案用不上,不過做了技術準備,就寫下來吧。

看到這個方形的xib檔案,怪怪的,這是為了支援橫屏和豎屏的,因為這個專案只需要豎屏,也可以這樣:

不改也沒關係。

Images.xcassets裡建立backgroundImage

LaunchScreen.xib中加一個圖片,用剛剛建立的backgroundImage

測試一下,iOS8下面的Launch Screen都沒有問題了:

  • iPhone6+用的是3x
  • iPhone5s用的是Retina 4 2x
  • iPhone6和iPhone4s都是用的2x

因此我沒有新增1x的圖片,基本沒用。

結論

  • 目前比較好的方式是使用Launch Image的方式建立各種裝置的圖片檔案,相容iOS7/8
  • 使用LaunchScreen.xib,功能更強大,但是僅支援iOS8,可能再過幾年可以成為主流方法

原始碼見這裡:GitHub

,是使用LaunchImage的方式。

相關推薦

Launch ScreeniOS7/8 實現

目前專案中需要解決的問題是:相容iOS7和iOS8,之前的版本不需要支援了實現相容3.5、4、4.7和5.5寸螢幕,豎屏的Lauch Screen建立所需的PNG圖片有關iPhone6/6+相關尺寸見這裡需要如下尺寸圖片:用於iPhone6+的1242x2208,或者1080x1920,也就是Retina H

IOS7 8tableview分割線缺少15畫素

IOS8 設定TableView Separatorinset 分割線從邊框頂端開始 在ios8上 [TableViewsetSeparatorInset:UIEdgeInsetsMake(0,0,0,0)];不起作用經過測試加入下面方法 在ios7 8上都可以正常工作-(

JDK1.8HashMap實現

替換 應該 初始化 第一個元素 擴容 實現 1.8 put 相同 JDK1.8中的HashMap實現跟JDK1.7中的實現有很大差別。下面分析JDK1.8中的實現,主要看put和get方法。 構造方法的時候並沒有初始化,而是在第一次put的時候初始化 put

HashMap在jdk1.7和1.8實現

Java集合類的原始碼是深入學習Java非常好的素材,原始碼裡很多優雅的寫法和思路,會讓人歎為觀止。HashMap的原始碼尤為經典,是非常值得去深入研究的,jdk1.8中HashMap發生了比較大的變化,這方面的東西也是各個公司高頻的考點。網上也有很多應對面試的標準答案,我之前也寫過類似的面

【必備技能】HashMap在jdk1.7和1.8實現

static final int TREEIFY_THRESHOLD = 8; public V put(K key, V value) { return putVal(hash(key), key, value, false, true); } final V putVal(i

jdk1.8 HashMap 實現 陣列+連結串列/紅黑樹(預設桶長度大於8時)

轉載至  http://www.cnblogs.com/leesf456/p/5242233.html 一、前言   在分析jdk1.8後的HashMap原始碼時,發現網上好多分析都是基於之前的jdk,而Java8的HashMap對之前做了較大的優化,其中最重要的一個優化就是

jdk1.8ConcurrentHashMap的實現原理

併發環境下為什麼使用ConcurrentHashMap 1. HashMap在高併發的環境下,執行put操作會導致HashMap的Entry連結串列形成環形資料結構,從而導致Entry的next節點始終不為空,因此產生死迴圈獲取Entry 2. HashTa

Android多執行緒之Java 8ThreadLocal內部實現機制詳解

前言:ThreadLocal是執行緒內部的儲存類,通過它可以實現在每個執行緒中儲存自己的私有資料。即資料儲存以後,只能在指定的執行緒中獲取這個儲存的物件,而其它執行緒則不能獲取到當前執行緒儲存的這個物件。ThreadLocal有一個典型的應用場景,即我們在前文中

JDK1.8ArrayList的實現原理及原始碼分析

一、概述              ArrayList是Java開發中使用比較頻繁的一個類,通過對原始碼的解讀,可以瞭解ArrayList的內部結構以及實現方法,清楚它的優缺點,以便我們在程式設計時靈活運用。 二、原始碼分析 2.1 類結構  JDK1.8原始碼中的A

HashMap 在JDK1.8實現

摘要HashMap是Java程式設計師使用頻率最高的用於對映(鍵值對)處理的資料型別。隨著JDK(Java Developmet Kit)版本的更新,JDK1.8對HashMap底層的實現進行了優化,例如引入紅黑樹的資料結構和擴容的優化等。本文結合JDK1.7和JDK1.8的區別,深入探討HashMap的結構

Java實現String.padLeft和String.padRight

toc 還要 color for 失去 1-1 arraycopy ace pre 因為習慣了C#中的padLeft和padRight,接觸Java後突然失去這兩個功能,覺得別扭,就試著實現了這兩個方法。 Java中String.format()中帶有字符串對齊功能如下

php實現頁面跳轉的幾種方式

腳本 timeout location clas replace asc idt lee 實現 親測,not復制粘貼 PHP中實現頁面跳轉有一下幾種方式,看了幾個人寫的不是很條理,自己整理一下 在PHP腳本代碼中實現 <?php header("locati

關於java實現在oracle數據庫實現對中文首字母進行排序的解決方案

capital obj create team capi substr order ring 一個 首先介紹Oracle 9i新增加的一個系統自帶的排序函數 1、按首字母排序 在oracle9i中新增了按照拼音、部首、筆畫排序功能。設置NLS_SORT值 SCHIN

Quick-Cocos2d3.2RC1在Code IDE實現代碼提示

ref 使用 分享 tin doc tails 位置 壓縮包 http 之前寫Lua最痛苦的就是代碼提示問題,如今官方給了IDE很好用。以下說Quick使用IDE加入代碼提示問題。 第一步:制作api提示壓縮包。須要使用控制臺實現方法例如以下: 1、找到framew

ASP.NET MVC & WebApi 實現Cors來讓Ajax可以跨域訪問 (轉載)

詳細 簡介 part bsp bob 打印 不能 res user 什麽是Cors? CORS是一個W3C標準,全稱是"跨域資源共享"(Cross-origin resource sharing)。它允許瀏覽器向跨源服務器,發出XMLHttpRequest請求,從而克服了

在Android實現陰影效果

sta 技術 wid 語言 mat floating 大表 ado sch 在Android L推出後,Google提出了全新的設計語言:材質設計。其中很重要的一點就是陰影效果的使用,你可以為每一個View設置一個elevation值,相當於除了x、y之外的z值,z值決定

centos6.8+openvpn實現賬戶密碼連接

說明 文件的 persist exist base span htm sig 更改 #搭建openvpn(編譯安裝) 初始化環境 #update epel mirror yum install wget -y cd /etc/yum.repos.d &&

QML實現setTimeout和setInterval

comment del tint connect start pre 通過 false code Qt的QML中,js未提供setTimeout和setInterval,可以通過下面的代碼實現。 Timer {id: timer} function setTimeout

在RGui實現數據源的導入(數據框,.txt,excel,MySQL)

har 因子 eric data excel gen edit ram mes 數據框中數據導入 > mydata<-data.frame(age=numeric(0),+ gender=character(0),+ weight=numeric(0))>

html實現數據的顯示和隱藏

func 隱藏 obj else content cli solid head utf Author: YangQingQing <!DOCTYPE html><html><meta http-equiv="Content-Type" co