İOS 7.0.3'te "HelveticaNeue-Italic" e ne oldu


100

İPod touch'ımı iOS 7.0.3'e yükselttim ve "HelveticaNeue-Italic" kaybolmuş gibi görünüyor. Telefonla sorguladığımda:

[UIFont fontNamesForFamilyName:@"Helvetica Neue"]

Aşağıdaki fontNames'i alıyorum (13):

HelveticaNeue-BoldItalic,
HelveticaNeue-Light,
HelveticaNeue-UltraLightItalic,
HelveticaNeue-CondensedBold,
HelveticaNeue-MediumItalic,
HelveticaNeue-Thin,
HelveticaNeue-Medium,
HelveticaNeue-ThinItalic,
HelveticaNeue-LightItalic,
HelveticaNeue-UltraLight,
HelveticaNeue-Bold,
HelveticaNeue,
HelveticaNeue-CondensedBlack

Simülatörde aynı sorguyu çalıştırdığımda şunu alıyorum (14):

HelveticaNeue-BoldItalic,
HelveticaNeue-Light,
**HelveticaNeue-Italic,**
HelveticaNeue-UltraLightItalic,
HelveticaNeue-CondensedBold,
HelveticaNeue-MediumItalic,
HelveticaNeue-Thin,
HelveticaNeue-Medium,
HelveticaNeue-Thin_Italic,
HelveticaNeue-LightItalic,
HelveticaNeue-UltraLight,
HelveticaNeue-Bold,
HelveticaNeue,
HelveticaNeue-CondensedBlack

Bunu başka gören var mı?

---- Yeni bilgi ----

WWDC 2013 videosuna geri döndüm "Yazı Tipini Metin Kitiyle Kullanmak" ve ilginç kısım 12: 22'de başlıyor. Sunucu, örnek olarak OS X'teki "MetaFonts" dan bahsediyor. Söylediği şey, aşağıdaki gibi çağrıların altındaki yazı tipinin:

+ (NSFont *)messageFontOfSize:(CGFloat)fontSize

sürümler arasında ve hatta farklı kullanımlar arasında aynı temeldeki yazı tipini döndürme garantisi verilmez. Örneği Lucinda Grande idi. "HelveticaNeue-Italic" kullanımının versiyondan versiyona gidebileceğini söylemiyor gibiydi.

Bu yüzden iOS 7'de bir deney yaptım. Yazı tipimi aşağıdaki kodla oluşturdum:

UIFontDescriptor *fontDescriptor = [UIFontDescriptor fontDescriptorWithName:@"Helvetica Neue" size:16.0];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];

UIFont *fontWithDescriptor = [UIFont fontWithDescriptor:symbolicFontDescriptor size:16.0];

FontWithDescriptor için geçerli bir UIFont aldım ve fontName için fontu sorguladığımda:

[fontWithDescriptor fontName]

Geri aldım...

HelveticaNeue-Italic

Şekil git ???

Dolayısıyla, 7.0.3'ün olası cevabı yukarıdaki kod gibi görünüyor.

---- Daha Fazla Ayarlama ---

Çözüm yukarıda işe yaramasına rağmen resmi olarak doğru olduğunu düşünmüyorum. Aşağıdaki çözüme geçtim

    UIFontDescriptor *fontDescriptor = [[UIFontDescriptor alloc] init];

    UIFontDescriptor *fontDescriptorForHelveticaNeue = [fontDescriptor fontDescriptorWithFamily:@"Helvetica Neue"];
    UIFontDescriptor *symbolicFontDescriptor = [fontDescriptorForHelveticaNeue fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];

    textFont = [UIFont fontWithDescriptor:symbolicFontDescriptor size:textFontPointSize];

Bu, tüm doğru şeyleri yapıyor gibi görünüyor. Önceki yaklaşımı başka bir font ailesiyle denedim ve fontName ve fontFamily ile karıştırılmış gibiydi. Bu yardımcı olur umarım!


Bunu ben de gördüm. Ne olduğunu bilmiyorum ama bu tam bir gerileme.
ipodishima

İlginç bir şekilde, iOS 7.0.3'teki
Leo Natan

Görünüşe göre sorumu kendi soru ve araştırmanızla cevaplamışsınız, yazı tipi tanımlayıcısını kullanmak gerçekten de 7.0.3 iPhone'umda italik yazı tipini gösteriyor.
Rick van der Linde

Bu aynı zamanda iOS
7.0.4'teki

Yanıtlar:


31

Bu bir Apple hatasıdır. İOS 7.0.3'te tanıtıldı ve henüz iOS 7.0.4'ten itibaren düzeltilmedi. İOS 7.1'in geliştirici önizlemesinde düzeltilmiş görünüyor. Sorunu çözmek için kod (geliştirici forumlarında Apple tarafından sağlanır):

#import <CoreText/CoreText.h>

CGFloat size = 14;
UIFont *font = [UIFont fontWithName:@"HelveticaNeue-Italic" size:size];
if (font == nil && ([UIFontDescriptor class] != nil)) {
    font = (__bridge_transfer UIFont*)CTFontCreateWithName(CFSTR("HelveticaNeue-Italic"), size, NULL);
}

Xcode'un mevcut sürümünde (5.0.1 (5A2053)) bu yazı tipinin, Arayüz Oluşturucu'daki Yazı Tipi açılır listesinde bir seçenek olarak listelenmediğini de belirtmek gerekir. Bu nedenle, daha önce bu yazı tipiyle bir etiket yapılandırdıysanız, kullanıcı arayüzünün karıştırıldığını ve etikete çalışma zamanında başka bir yazı tipi ve boyutunun atandığını fark edeceksiniz (aşağıdaki kullanıcı arayüzü ekranına bakın). Film şeritlerinde / xibs'de yapılandırılan etiketler için koddaki yazı tipini sıfırlamanız gerekir.

Referans için burada konunun geliştirici forumlarında tartışılması var.

görüntü açıklamasını buraya girin


Tüm kullanımlarınızı başka bir şeyle değiştirdiğinizi söylüyorsunuz. Onu neyle değiştirdin? Bunu XIB dosyasında HelveticaNeue-MediumItalic ile değiştirirseniz, iOS 6 ve daha önceki sürümlerde yanlış sonuçlar aldığımızı fark ettik, çünkü bu yazı tipi iOS 7'de tanıtılmış gibi görünüyor.
GBegen

Onu HelveticaNeue-LightItalic ile değiştirdim. Ne zaman tanıtıldığından emin değilim. Uygulamam iOS7 +
Mike Vosseller

7

Bu, iOS 7.0.3'teki bir hatadır.

Açıkça HelveticaNeue-Italic kullanıyorsanız, bu geçici çözümü kullanarak oluşturabilirsiniz:

UIFont* font = (__bridge_transfer UIFont*)CTFontCreateWithName(CFSTR("HelveticaNeue-Italic"), fontSize, NULL);

Ancak, bu geçici çözüm olacağı sadece iOS 7'de çalışacak; o iOS 6'ya (çünkü konuşlandırılabilir değildir CTFontRefve UIFontiOS 6 köprülenecektir ücretsiz değildi). Bununla birlikte, iOS 6'da normal yazı tipi arama kodunuzu kullanabilirsiniz.


4

Bunun bir hata olduğuna inanıyorum. Apple ile bu şekilde dosyaladım. Ne yazık ki benim için uygulamam şimdi çöküyor. Yazı tipi, kullandığım bir 3. taraf kitaplığında kullanılıyor. Twitter'daki birçok kişi sorunları bildiriyor.


1
Bilginize: Az önce test ettim ve hata iOS 7.0.4'te hala mevcut.
David Lari

3

Dinamik ardından italik yazı erişen yerine adıyla yazı erişiyorsanız [UIFont fontWithName:@"HelveticaNeue-Italic" size:15.0f] kullanmak [UIFont italicSystemFontOfSize:15.0f]bu benim için iyi çalışıyor olduğunu.


Bu belki de bu konuyla ilgili en temiz çalışmadır. İOS 6 desteği gerekiyorsa, çalıştırmakta deneyebilirsiniz fontWithName:size:ilk ve sonuç ise nil, çalışma italicSystemFontOfSize:her zaman bir şeyler dönmelidir, ve en az bir çarpışma kaçının.
SaltyNuts

2

Şu anda oturumu bulamıyorum ancak yazı tiplerinin iOS7'de artık mevcut olmasına güvenemeyeceğiniz bir şey söylediler. Hatta uygulamanızın kullanım ömrü boyunca değişebilirler. Bunun anlamı şudur: Uygulamanızda yazı tiplerini belirlediğinizde, sorun yaşarsınız, bunun yerine yazı tipi tanımlayıcılarını veya tercih edilen yazı tiplerini kullanın!


2
Bulabildiğim en yakın eşleşme asciiwwdc.com/2013/sessions/223 , ancak sistem tarafından sağlanan yazı tiplerine değil, indirilebilir yazı tiplerine atıfta bulunuyorlar gibi görünüyor.
Hilton Campbell

Yukarıdaki yeni bilgilere bakın. Sanırım sunum yapan kişinin söylediği şey, sürümler ve hatta kullanımlar arasında aynı temel yazı tiplerine "MetaFonts" eşlemesine güvenemeyeceğinizdir. "HelveticaNeue-Italic" gibi bir şeyin ortadan kalkma ihtimalinin bile olduğunu söylediğini sanmıyorum.
Scott Sarnikowski

1

İşe yarayan başka bir çözüm buldum. Bir aramadan çıkış yaptım

[[UIFont italicSystemFontOfSize:12.0] fontName]

kullanılan asıl sistem italik yazı tipinin ne olduğunu görmek için ".HelveticaNeueInterface-ItalicM3" döndürdü. Basit bir test, kullanmanın

[UIFont fontWithName:@".HelveticaNeueInterface-ItalicM3" size:12.0]

İşler! Bunları görsel olarak karşılaştırdığımızda, yukarıdaki çağrının döndürdüğü yazı tipi, orijinal 'HelveticaNeue-Italic' yazı tipiyle tamamen aynı görünüyor.

Bu sorun neredeyse kesinlikle bir hatadır ... Helvetica Neue, iOS 7'deki varsayılan yazı tipidir, bu nedenle bu ailedeki yazı tipleri eksik olmamalıdır. Xcode v.5.0'da her şey yolunda gitti, ancak 5.0.1'e yükselttikten hemen sonra bu sorun görünmeye başladı. Apple'a da bir hata bildirdim. O zamana kadar bu çözüm işe yarıyor gibi görünüyor ...


1

Apple'a kaydettiğim hata raporu "Yinelenen olarak kapatıldı" olarak işaretlendi. Umutluyum, bunun bir hata olduğunu düşündükleri anlamına geliyor. Ancak iOS 7.0.4 hatayı düzeltmez.


1
Ben de aynı cevabı aldım. Umarım düzeltirler.
Scott Sarnikowski

1

Hata iOS 7.1 beta 1'de düzeltilmiş gibi görünüyor [UIFont fontWithName:@"HelveticaNeue-Italic" size:size];. Bir yazı tipi döndürür.


İyi haber, ama bu hala Gizlilik Sözleşmesi kapsamında.
Vincent Tourraine

9
Bu riski alacağım.
Leo Natan

0

Eskiden yalnızca iOS 7.0.3 ve 7.0.4'te çökmek için olanla aynı kilitlenme yaşadım ve diğer tüm sürümlerde mükemmel çalışıyor. Bu kadar çok araştırmadan sonra, @ "HelveticaNeue-Italic" in iOS 7.0.3 ve 7.0.4 sürümlerinde mevcut olmadığını öğrendim, bu nedenle bu sürümlerde çökmenin üstüne çıkıyordum.

Sorunu aşağıdaki kodla düzelttim, bu muhtaç birine yardımcı olabilir.

self.headerFont = [UIFont fontWithName:@"HelveticaNeue-Italic" size:16.0f];
if (self.headerFont == nil) {
    self.headerFont = [UIFont fontWithName:@"HelveticaNeue" size:16.0f];
}

Kilitlenme günlüğü:

[__NSCFConstantString pointSize]: unrecognized selector sent to instance 

-1

UIWebView'da HelveticaNeue italik desteği hakkında kimse bir şey söylemediğinden, bulgularımı paylaşacağımı düşündüm.

7.0.6'dan itibaren, UIWebView'da normal italik hala eksik ve aynı ailede UltraLightItalic'e geri dönüyor gibi görünüyor. Normal ağırlıklı, italik olmayan HelveticaNeue metninin hemen yanında, çok daha hafif olduğu için bu biraz garip görünüyor.

Çözümüm HelveticaNeue yerine sıradan Helvetica kullanmaktı, ancak sadece italik için. Dolayısıyla, aşağıdaki gibi görünen CSS'niz varsa:

.myCssClass {
    font-family:HelveticaNeue;
    /* etc, etc */
}

... geçersiz kılmak için iki sınıf daha eklersiniz <i>ve <em>:

.myCssClass i  { font-family:Helvetica; }
.myCssClass em { font-family:Helvetica; }

Normal Helvetica italik yazı tipi iyi görünüyor ve kimsenin HelveticaNeue olmadığını fark edeceğini sanmıyorum.

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.