IOS13'te bu yazı tipi ile ilgili coretext uyarısının kaynağını nasıl bulabilirim?


17

Uygulamamın bir güncellemesi üzerinde çalışırken, uygulamayı IOS13'te Xcode 11.2'de çalıştırırken günlükte tonlarca uyarı aldığımı fark ettim.

CoreText not: İstemci adı ".SFUI-Normal" istedi, istenen yazı tipi yerine TimesNewRomanPSMT alır. Tüm sistem kullanıcı arayüzü yazı tipi erişimi, CTFontCreateUIFontForLanguage () veya + [UIFont systemFontOfSize:] gibi uygun API'ler aracılığıyla olmalıdır.

Biraz kazdık ve WWDC'den bu teklifi buldum:

Çok sayıda WWDC oturumunda belirtildiği gibi, nokta ön ekli yazı tipi adları doğrudan kullanılmaz.

Kendimi neredeyse sadece metin alanları vb için yazı tiplerini ayarlamak için IB ve uçları kullanarak ve kodumda herhangi bir yerde "SFUI-Regular" referans yok, bu yüzden nasıl bu uyarılar için gerçek neden bulmak için emin değilim (var günlüklerde 20-30 satır gibi bir şey).

Herkes uyarı nereden bulabilirim ve nasıl düzeltilir hakkında herhangi bir ipucu var mı?

Yanıtlar:


6

Konsolda başka bir çıkış var, sembolik bir kesme noktası eklemeyi deneyebilirsiniz

CoreText notu: Hata ayıklamak için CTFontLogSystemFontNameRequest üzerinde bir kesme noktası ayarlayın.


Evet, bu sembolik kırılma noktasını ayarlayın. Sona erdiğinde, çağrı yığınınızı kontrol edin. Daha sonra suçlunun ne olduğunu göreceksiniz. Benim için 3. taraf yazılım.
PDG

@PDG 3. taraf yazılım tam olarak ne yaptı?
Kaunteya

5

Bu uyarıyı hem MacOS hem de iOS hedefleriyle Xcode 11'den başlayarak konsolda yaşamaya başladım.

Adresinden ".SFUI-Düzenli" mesajı alacaksınız UIFont.systemFont(ofSize: X).fontName. Daha sonra, kullanarak örneklemeye çalışırsanız uyarı oluşur UIFont(name: fontName, size: size).

Benim durumumda kullanıcının ekran yazı tipini özelleştirmesine izin veriyorum, ancak varsayılan ".SFUI-Düzenli" idi, bu yüzden bunu "TimesNewRomanPSMT" olarak değiştirdim

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

// replace with
let defaultFont = "TimesNewRomanPSMT"

UIFont(name: defaultFont, size: size)

2

Aynı sorun ve kodumda nokta önekli yazı tipine referans yok. Sembolik bir kesme noktası belirle


2
MacOS uygulamasında da aynı sorun var. SDK hatasından şüphelenmeye başladım mı?
Jorge Leandro Perez

Kullandığım bir kapsülün eski bir versiyonunu benim buldum.
Tony Law

6
Kayıt için, bu sorunu boş bir macOS projesinde, harici bağımlılıklarda ve sadece 2 satır kodda çoğalttım. Teknik Destek bileti gönderildi, bayanlar ve baylar, sizi haberdar edecek
Jorge Leandro Perez

1
@Klaas geç kaldığım için özür dileriz! EVET ... bu Teknik Destek aracılığıyla aldığım resmi yanı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. (Ve daha fazla bir şey eklemediler .... "sistem hatası")
Jorge Leandro Perez

0

Benim için, bir süredir güncellenmemiş üçüncü taraf bir kütüphane olduğu ortaya çıktı, bu suçlu.

Kullanıcı clatt önerdiği ve kaynağı bulduğu gibi bir kesme noktası koymak. Benim durumumda TOMSMorphingLabel oldu .


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

13 için uifont sorunu için çözüm

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.