Xcode 10 - ตัวอักษรภาพไม่สามารถใช้ได้อีกต่อไป


95

หมายเหตุประจำรุ่น Xcode 10: "การเติมโค้ดให้สมบูรณ์สำหรับตัวอักษรภาพ Swift ถูกลบใน Xcode 10"

ดังนั้นจึงไม่ใช่ข้อบกพร่องที่ฉันไม่สามารถเพิ่มรูปภาพในโค้ดได้ (และเรียกใช้โปรเจ็กต์เก่า ๆ ) จากนี้เราจะเพิ่มรูปภาพในโค้ดได้อย่างไรเนื่องจากการพิมพ์UIImageView(image:จะไม่ยอมรับ png หรือ jpeg ใด ๆ

let cellImage: UIImageView = {
    let image = UIImageView(image: ???))

    return image
}()

ระบบ: macOS Mojave
Xcode: Xcode 10 Beta 4


UIImage(named: "myImage")เหมือนสมัยก่อน (?)
Alladinian

สิ่งที่น่าสังเกต: มีการทิ้งเฉพาะการเติมโค้ดสำหรับตัวอักษรภาพเท่านั้น ตัวอักษรภาพตัวเองอย่างต่อเนื่องเพื่อปรับการทำงานใน XCode 10 กับสวิฟท์ 4.2
iSofia

@isofia ไม่พวกเขาทำไม่ได้เพราะคุณทำไม่ได้
แมตต์

3
นี่เป็นเรื่องโชคร้ายการที่ภาพเสร็จสมบูรณ์เป็นคุณสมบัติที่ดี
Eric Armstrong

คำตอบ:


124

ในXcode 10 และ Swift 4.2เฉพาะฟังก์ชันการเติมโค้ด (หรือการเติมอัตโนมัติ) ของ Xcode IDE เท่านั้นที่ถูกยกเลิกด้วยวิธีการเดิม นี่คือวิธีใหม่:

เพียงพิมพ์image literalและมันจะเสร็จสมบูรณ์ด้วยไอคอนเริ่มต้น

ป้อนคำอธิบายภาพที่นี่

 

ดับเบิลคลิกที่ไอคอนนี้และจะเปิดไลบรารีสื่อทางด้านขวาของมัน

ป้อนคำอธิบายภาพที่นี่

 

เพียงเลือกภาพของคุณก็ใช้งานได้เหมือนเดิม!

ป้อนคำอธิบายภาพที่นี่


63
เป็นไปไม่ได้ที่จะหาภาพตามชื่อด้วยวิธีนี้ และนักออกแบบของฉันให้เนื้อหาทั้งหมดเป็น png สีขาวบนโปร่งใสดังนั้นภาพขนาดย่อทั้งหมดจะแสดงเป็นสีขาวบริสุทธิ์ในลำดับแบบสุ่ม ... ภาพที่จะเลือกเป็นไปไม่ได้ -_-
Cœur

2
สวัสดี Coeur โปรดบอกการออกแบบของคุณให้วางภาพทั้งหมดเป็นสีเทาจากนั้นคุณเปลี่ยนเนื้อหาของคุณเป็นเทมเพลตจากนั้นคุณสามารถย้อมสีบนกระดานเรื่องราวหรือรหัส :)
Daniel Arantes Loverde

นี่เป็นเรื่องปกติดับเบิลคลิกเพื่อเปิดรายการ
Daniel Arantes Loverde

@ Cœurไม่ใช่เรื่องที่เป็นไปไม่ได้ แต่มันยากถ้าคุณผ่านโปรเจ็กต์ #imageLiteral เป็นเพียงการแสดงกราฟิกของสตริงโทเค็นซึ่งทำให้สามารถค้นหาได้ด้วยการค้นหา (#imageLiteral ในโฟลเดอร์ปัจจุบันของคุณ) :)
Dominik Bucher

@DominikBucher เป็นเวลาสองปีแล้วและตอนนี้ฉันใช้ Xcode 12 ดังนั้นขั้นตอนคือการใช้ปุ่ม+ + Lหรือปุ่ม+ที่ด้านบนขวาของ Xcode
Cœur

98

พบทางลัดเพื่อเปิดแท็บไลบรารีสื่อ:

+ +M

ณ จุดนี้เอกสารอย่างเป็นทางการไม่ครอบคลุมกรณีการใช้งานบางอย่างใน Xcode 10 beta ดังนั้นฉันจึงไม่สามารถหาวิธีย้ายส่วนสื่อไปยังตำแหน่งเดิมได้


7
แย่จังฉันพิมพ์ enter เพื่อแทรกรายการไม่ได้ ฉันต้องใช้เคอร์เซอร์ของเมาส์ลากรายการเป็นรหัส -.-
fl034

4
ไลบรารีสื่อไม่ได้แทรกลิเทอรัลของรูปภาพที่เหมาะสมแม้ว่า ... มันจะมี 3 ตัวอักษรของรูปภาพที่อ้างอิงถึงความละเอียดของรูปภาพ 3 แบบ
Joshua Sullivan

หากคุณลบสองรายการแรกก็ยังใช้งานได้ ยุ่งมาก Apple
CIFilter

53

คุณสามารถใช้ Media Library ใน Xcode เพื่อเพิ่ม Image literal ให้กับโค้ดของคุณ:

แสดงไลบรารีสื่อ XCode

จากนั้นเลือกรูปภาพจากไลบรารีแล้วลากและวางลงในโค้ดของคุณ

เลือกภาพจากห้องสมุด

มันจะสร้างภาพตามตัวอักษร


ขอบคุณ! สำหรับคนอื่น ๆ : ในภาพหน้าจอแรกไอคอนLEFTMOSTถูกกด {}
xaphod

3
ที่น่าสนใจสิ่งนี้สร้างตัวอักษรภาพที่ไม่ถูกต้องสำหรับฉันเมื่อใช้ทรัพยากร pdf ส่งผลให้รันไทม์ขัดข้องในการสร้าง GM
David Ganster

15
นี้จะสร้างหนึ่งตัวอักษรสำหรับแต่ละ@1x, @2xและ@3xสินทรัพย์และดังนั้นจึงไม่ได้รวบรวม
Zappel

2
อย่างจริงจังควรจะทำงานอย่างไร? ไม่มีวิธีการลากและวางการแทนค่าความละเอียดทั้งสามแบบเดียวหรือไม่? ดูเหมือนว่า Apple จะมีการกำกับดูแลอย่างมาก
aBikis

28

เพื่อประโยชน์ของผู้อื่นที่มีรหัสเดิมที่ใช้Swift Image Literals โค้ดและไวยากรณ์ของฟังก์ชันลิเทอรัลของรูปภาพยังคงใช้ได้และทำงานได้ดีอย่างสมบูรณ์ใน Xcode 10 พร้อม Swift 4.2

ไม่จำเป็นต้องย้อนกลับหรือเปลี่ยนโค้ดที่มีอยู่ซึ่งใช้ไลเทอร์รูปภาพเหล่านี้และยังสามารถใช้งานได้ดังนี้:

imageView.image = #imageLiteral(resourceName: imageNameString)

เฉพาะฟังก์ชันการเติมโค้ด (หรือการเติมอัตโนมัติ) ของ Xcode IDE เท่านั้นที่ถูกยกเลิก


อัปเดต

ความแตกต่างในการแสดงภาพตามตัวอักษรในเวอร์ชันก่อนหน้าและเวอร์ชันปัจจุบันหรือ Xcode / Swift:

image = #imageLiteral(resourceName: "flower.jpg")

รูปภาพ = #imageLiteral (resourceName: "flower.jpg")

ตามที่แยกแสดงให้เห็นตัวอักษรของภาพจะแสดงในแนวเดียวกับภาพขนาดย่อของภาพจริง อย่างไรก็ตามตอนนี้มีเพียงไอคอนทั่วไปเท่านั้นที่ถูกใช้แทน สันนิษฐานว่าจะช่วยลดภาระของ IDE โดยการกำจัดค่าใช้จ่ายในการจัดการและการแสดงภาพขนาดย่อในบรรทัด


2
เรารู้หรือไม่ว่าทำไม Apple ถึงเอาสิ่งนี้ออกมา? ตัวอักษรภาพจะถูกคิดค่าเสื่อมราคาในอนาคตหรือไม่?
Bryan Hill

@BryanHill ไม่มีคำอธิบายให้ฉันรู้ แต่ฉันได้อัปเดตคำตอบของฉันข้างต้นด้วยการเดาที่ดีที่สุด
iSofia

ฉันได้ทำเครื่องหมายว่าเมื่อใดที่คุณจะเห็นไอคอนทั่วไปแทนที่รูปภาพ จากนั้นแอปพลิเคชันของคุณจะล้มเหลวในสถานที่นั้น
Badal Shah

ทันใดนั้นฉันก็มีภาพขนาดย่อปรากฏขึ้นในบรรทัดเมื่อฉันเลือกบรรทัดที่มี (Xcode 10.0 (10A255))
fl034

2
ฉันคิดว่ามันเป็นเพียงข้อผิดพลาด
Reid Ellis

18

เคล็ดลับ: ในการแก้ไขความละเอียดสามประการหลังจากเพิ่มรูปภาพตามตัวอักษรในโค้ด
1. ลบอีกภาพเก็บไว้เพียงภาพเดียว
2. แสดงความคิดเห็นรหัสบรรทัดของคุณด้วยภาพตามตัวอักษรจากนั้นจะปรากฏภาพตามตัวอักษรในรหัสเช่น: #imageLiteral(resourceName: "image@2x.png"
3. resourceNameค่าลบ@2xและนามสกุลไฟล์เช่น.pngเก็บไว้เฉพาะชื่อภาพ: #imageLiteral(resourceName: "image")
4. ไม่ใส่ความคิดเห็น! ภาพจะแสดงในรหัส


4
ขอบคุณ. ช่างเป็นถังขยะที่กำลังโหมกระหน่ำตัวอักษรภาพ XCode อยู่ที่ mo
xaphod

1
(ฉันแค่ชอบraging dumpster fire;))
Chris Prince

ขอบคุณนี่เป็นวิธีที่ดีในการใช้งานได้จริงimage name(แต่ยังคงเป็นรูปภาพตามตัวอักษร) แทนที่จะต้องเลือกจากเครื่องมือเลือก
angtlin


7

หากใครใช้Xcode 11คุณสามารถค้นหาสื่อทั้งหมดได้โดยใช้ตัวเลือกด้านล่าง:

ป้อนคำอธิบายภาพที่นี่

ป้อนคำอธิบายภาพที่นี่


แต่นี่แทรกเฉพาะเส้นทางไปยังรูปภาพ?
Ixx

ใช่เส้นทางแทรกเท่านั้น แต่เป็นวิธีที่คุณสามารถตรวจสอบตัวอักษรภาพทั้งหมดได้
กูรู


0

ฉันใช้ Xcode 10 beta 4 และฉันมีปัญหาเดียวกัน! แก้ไขโดยใช้วิธีเดิมในการส่งผ่านรูปภาพ

PizzaModel(
            nome: "Marinara",
            ingredienti: "Pomodoro, Aglio",
            calorie: "729",
            img: UIImage(named: "marinara")!
)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.