ฉันจะหาแหล่งที่มาของคำเตือน coretext ที่เกี่ยวข้องกับตัวอักษรใน IOS13 ได้อย่างไร


17

ทำงานกับการอัปเดตแอปของฉันฉันสังเกตว่าฉันได้รับคำเตือนมากมายในบันทึกเมื่อใช้งานแอพใน Xcode 11.2 บน IOS13

CoreText note: ไคลเอนต์ร้องขอชื่อ ".FUI-Regular" จะได้รับ TimesNewRomanPSMT แทนที่จะเป็นแบบอักษรที่ต้องการ การเข้าถึงแบบอักษร UI ของระบบทั้งหมดควรผ่าน API ที่เหมาะสมเช่น CTFontCreateUIFontForLanguage () หรือ + [UIFont systemFontOfSize:]

ฉันขุดประมาณเล็กน้อยและพบคำพูดนี้จาก WWDC:

ดังที่ได้กล่าวไว้ในเซสชัน WWDC จำนวนมากชื่อฟอนต์ที่ขึ้นต้นด้วยคำนำหน้านั้นไม่ควรใช้โดยตรง

ฉันเป็นตัวของตัวเองโดยเฉพาะการใช้ IB และไส้ปากกาในการตั้งค่าแบบอักษรสำหรับฟิลด์ข้อความ ฯลฯ และไม่มีการอ้างอิงถึง "SFUI- ปกติ" ในรหัสของฉันที่ใดก็ได้ดังนั้นฉันไม่แน่ใจว่าจะหาเหตุผลจริงสำหรับคำเตือนเหล่านี้ได้อย่างไร ประมาณ 20-30 แถวในบันทึก)

ไม่มีใครมีเคล็ดลับเกี่ยวกับวิธีที่ฉันสามารถหาคำเตือนที่มาจากและวิธีการแก้ไขได้อย่างไร

คำตอบ:


6

มีเอาต์พุตอื่นในคอนโซลคุณสามารถลองเพิ่มเบรกพอยต์สัญลักษณ์

CoreText note: ตั้งค่าเบรกพอยต์บน CTFontLogSystemFontNameRequest เพื่อดีบัก


ใช่ตั้งค่าเบรกพอยน์สัญลักษณ์นี้ เมื่อพักให้ตรวจสอบสแตกการโทรของคุณ จากนั้นคุณจะเห็นว่าผู้กระทำผิดคืออะไร สำหรับฉันซอฟต์แวร์ของบุคคลที่สาม
PDG

@PDG ซอฟต์แวร์ของ บริษัท อื่นทำอะไรอยู่
Kaunteya

5

ฉันเริ่มประสบกับคำเตือนนี้ในคอนโซลที่เริ่มต้นด้วย Xcode 11 โดยมีเป้าหมายทั้ง MacOS และ iOS

คุณจะได้รับ ".SFUI-ปกติ" UIFont.systemFont(ofSize: X).fontNameจาก UIFont(name: fontName, size: size)คำเตือนจะเกิดขึ้นหากคุณพยายามที่จะยกตัวอย่างการใช้

ในกรณีของฉันฉันให้ผู้ใช้กำหนดแบบอักษรที่แสดง แต่ค่าเริ่มต้นคือ ".SFUI- ปกติ" ดังนั้นฉันจึงเปลี่ยนเป็น "TimesNewRomanPSMT"

let defaultFont = UIFont.systemFont(ofSize: X).fontName

// replace with
let defaultFont = "TimesNewRomanPSMT"

UIFont(name: defaultFont, size: size)

2

มีปัญหาเดียวกันและไม่มีการอ้างอิงถึงแบบอักษรนำหน้า dot ในรหัสของฉันอย่างใดอย่างหนึ่ง ตั้งค่าเบรกพอยต์สัญลักษณ์ แต่ไม่มีประโยชน์ใด ๆ


2
ปัญหาเดียวกันที่นี่ในแอป macOS ฉันเริ่มสงสัยข้อผิดพลาด SDK หรือไม่
Jorge Leandro Perez

ฉันติดตามของฉันไปที่พ็อดที่ฉันใช้อยู่เวอร์ชั่นเก่า
Tony Law

6
สำหรับบันทึกฉันได้ทำซ้ำปัญหานี้ในโครงการ macOS ที่ว่างเปล่าไม่มีการพึ่งพาจากภายนอกและมีเพียง 2 บรรทัดของรหัส ส่งตั๋วการสนับสนุนทางเทคนิคแล้วจะแจ้งให้คุณสุภาพสตรีและสุภาพบุรุษ
Jorge Leandro Perez

1
@Klaas ขอโทษที่มาสาย! ใช่ ... นี่คือคำตอบอย่างเป็นทางการที่ฉันได้รับผ่านการสนับสนุนด้านเทคนิค:
Jorge Leandro Perez

1
Regarding the error mesage shown in your video, I view it as a system bug because I don’t see any of your code requesting “.AppleColorEmojiUI” – If your real app indeed does that, you should follow the message to correct it. Other than that, I don’t have anything worth to mentioning. (และพวกเขาไม่ได้เพิ่มอะไรเพิ่มเติม .... "ข้อผิดพลาดของระบบ")
Jorge Leandro Perez

0

สำหรับฉันแล้วมันกลับกลายเป็นว่าเป็นห้องสมุดบุคคลที่สามที่ยังไม่ได้รับการปรับปรุงในขณะที่เป็นผู้ร้าย

ฉันวางเบรกพอยต์ตามที่ผู้ใช้แนะนำและพบแหล่งที่มา ในกรณีของฉันมันเป็นTOMSMorphingLabel


0
let fontCT = CTFontCreateUIFontForLanguage(.label, fontSize as CGFloat, nil)
attrStr.addAttribute(.font, value: fontCT as Any, range: NSMakeRange(0, text.count))

ทางออกสำหรับปัญหา uifont สำหรับ ios 13

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.