Làm cách nào tôi có thể tìm thấy nguồn cảnh báo coretext liên quan đến phông chữ này trong IOS13?


17

Làm việc trên một bản cập nhật của ứng dụng của tôi, tôi nhận thấy rằng tôi nhận được vô số cảnh báo trong nhật ký khi chạy ứng dụng trong Xcode 11.2 trên IOS13.

CoreText lưu ý: Tên khách hàng yêu cầu ".SFUI-Thường xuyên", nó sẽ nhận được TimesNewRomanPSMT thay vì phông chữ dự định. Tất cả quyền truy cập phông chữ UI hệ thống phải thông qua các API thích hợp, chẳng hạn như CTFontCreateUIFontForL Language () hoặc + [UIFont systemFontOfSize:].

Tôi đã tìm hiểu một chút và tìm thấy trích dẫn này từ WWDC:

Như đã đề cập trong nhiều phiên WWDC, tên phông chữ có tiền tố không được sử dụng trực tiếp.

Bản thân tôi hầu như chỉ sử dụng IB và ngòi để đặt phông chữ cho trường văn bản, v.v. và không có tham chiếu đến "SFUI-Thường xuyên" trong mã của tôi ở bất cứ đâu, vì vậy tôi không chắc chắn làm thế nào để tìm lý do thực sự cho những cảnh báo này (tôi có một cái gì đó như 20-30 hàng trong số này trong nhật ký).

Có ai có bất cứ lời khuyên nào về cách tôi có thể tìm thấy cảnh báo đến từ đâu và cách khắc phục không?

Câu trả lời:


6

Có một đầu ra khác trong giao diện điều khiển, bạn có thể thử thêm một điểm dừng tượng trưng

Ghi chú CoreText: Đặt điểm dừng trên CTFontLogSystemFontNameRequest để gỡ lỗi.


Có, đặt điểm dừng tượng trưng này. Khi nó bị hỏng, hãy kiểm tra ngăn xếp cuộc gọi của bạn. Sau đó bạn sẽ thấy thủ phạm là gì. Đối với tôi, phần mềm bên thứ 3.
PDG

@PDG Chính xác thì phần mềm bên thứ 3 đang làm gì?
Kaunteya

5

Tôi bắt đầu trải nghiệm cảnh báo này trong bảng điều khiển bắt đầu với Xcode 11, với cả mục tiêu MacOS và iOS.

Bạn sẽ nhận được ".SFUI-Thường xuyên" từ UIFont.systemFont(ofSize: X).fontName. Cảnh báo sau đó sẽ xảy ra nếu bạn cố gắng khởi tạo bằng cách sử dụng UIFont(name: fontName, size: size).

Trong trường hợp của tôi, tôi cho phép người dùng tùy chỉnh phông chữ hiển thị, nhưng mặc định là ".SFUI-Thường xuyên", vì vậy tôi đã thay đổi nó thành "TimesNewRomanPSMT"

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

// replace with
let defaultFont = "TimesNewRomanPSMT"

UIFont(name: defaultFont, size: size)

2

Có cùng một vấn đề và không có tham chiếu đến phông chữ tiền tố trong mã của tôi. Đặt điểm dừng tượng trưng nhưng không có gì sử dụng


2
Vấn đề tương tự ở đây, trong một ứng dụng macOS. Tôi bắt đầu nghi ngờ lỗi SDK?
Jorge Leandro Perez

Tôi truy tìm một phiên bản cũ hơn của một pod tôi đang sử dụng.
Luật Tony

6
Đối với bản ghi, tôi đã tái tạo vấn đề này trong một dự án macOS trống, không có phụ thuộc bên ngoài và chỉ có 2 dòng mã. Vé hỗ trợ kỹ thuật đã được gửi, sẽ giữ cho bạn được đăng, thưa quý vị và quý ông
Jorge Leandro Perez

1
@Klaas xin lỗi về việc đến muộn! CÓ ... đây là phản hồi chính thức mà tôi nhận được, thông qua Hỗ trợ kỹ thuật:
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. (Và họ đã không thêm bất cứ điều gì nữa .... "lỗi hệ thống")
Jorge Leandro Perez

0

Đối với tôi, hóa ra đó là một thư viện của bên thứ ba chưa được cập nhật trong một thời gian đó là thủ phạm.

Tôi đặt một điểm dừng khi người dùng gợi ý và tìm thấy nguồn. Trong trường hợp của tôi, đó là TOMSMorphingLabel .


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

giải pháp cho vấn đề uifont cho ios 13

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.