Xcode assets 圖片改名時搭配 replace 修改專案裡使用圖片的地方

最近遇到同學問彼得潘,他在 Xcode assets 修改圖片的名字,專案裡用到圖片的地方卻不會同步改名,因此造成圖片無法顯示,只能悲慘地找出設定的地方一個個修正。

比方原本圖片名字是 boy,在 storyboard 的 image view 和 SwiftUI 的 Image 都設定了 boy。

struct ContentView: View {
var body: some View {
Image("boy")
}
}

後來從 assets 將圖片改名 macbook boy,storyboard 的 image view 和 SwiftUI 的 Image 都傻傻地不更新,造成圖片一片空白。

struct ContentView: View {
var body: some View {
Image("boy")
}
}

彼得潘研究一下後,覺得目前最快的方法應該是在 assets 圖片改名時搭配 replace 修改專案裡使用圖片的地方,步驟如下。

  • 從 assets 圖片的右鍵選單點選 Find References to Item。

如下圖所示,它將聰明地找到 boy 出現在 3 個地方,assets、storyboard 和 SwiftUI Image。

點選 Find,將它改成 Replace。

在下方提示 With 的框框輸入圖片的新名字,彼得潘輸入 macbook boy 後按 enter。從下圖可看到除了 assets、storyboard、SwiftUI Image,它還找到了名叫 boy 的變數。

為了避免取代錯人,請點選不要取代的對象,按 delete 將它刪除。

現在剩下的都是想取代的對象,可以放心地按下 Replace All。

大功告成 ! assets、storyboard image view、SwiftUI Image 的圖片名字都更新成 macbook boy。

struct ContentView: View {
let boy = "peter"

var body: some View {
Image("macbook boy")
}
}

值得注意的,,此方法在某些寫法會有問題,比方當初 Image 是用 Xcode 自動生成的 ImageResource .boy 設定。

struct ContentView: View {

var body: some View {
Image(.boy)
}
}

那麼 assets 圖片改名為 macbook boy 時,它的名字應該要叫 .macbookBoy,但是 Replace 只會傻傻地將它換成 .macbook boy。

--

--

彼得潘的 iOS App Neverland
彼得潘的 Swift iOS App 開發問題解答集

彼得潘的iOS App程式設計入門,文組生的iOS App程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com