2014-09-20 29 views
8

Tôi có phông chữ tùy chỉnh được đưa vào dự án của mình, vốn hoạt động hoàn toàn tốt cho đến khi tôi nâng cấp mã Xcode lên phiên bản 6 với iOS 8 làm SDK cơ sở. Giờ đây, phông chữ tùy chỉnh không còn hoạt động nếu tôi chạy ứng dụng trên thiết bị hoặc trình mô phỏng iOS 8, nhưng nó vẫn hoạt động trong các thiết bị iOS 7 của tôi. Bất kỳ đề xuất?Phông chữ tùy chỉnh không hoạt động trong iOS 8

+0

như thế nào mục nhập trong giao diện Info.plist. Tệp nằm trong ứng dụng của bạn ở đâu? Bạn truy cập phông chữ như thế nào? – idmean

+0

Tôi biết rằng trong Xcode5 ít nhất, nó không quan trọng nếu bạn sử dụng vốn hoặc không phải trong tên tập tin của bạn, nhưng trên một thiết bị nó không quan trọng. Có lẽ họ cũng đã thay đổi quy tắc này cho Xcode6. – bdv

+0

@bdv vâng, tôi nhớ rằng thời gian dài trước đây khi giao dịch với một số hình ảnh được hiển thị/không được hiển thị trong trình mô phỏng và thiết bị. Đối với điều này font, tôi đã kiểm tra và đó là tất cả các trường hợp thấp hơn và phù hợp với tên tập tin trên đĩa. – CodePlumber

Trả lời

1

Tôi đã tìm thấy nguyên nhân của phông chữ "bị thiếu". Trong thực tế, phông chữ vẫn còn đó, nhưng từ iOS 7 đến iOS 8, tên phông chữ đã có một thay đổi tinh tế nhưng đột ngột: trong iOS 7 nó được gọi là, ví dụ: "Custom_Font-Style", nhưng bây giờ trong iOS 8 nó được gọi là "Custom-Font-Style". Lưu ý dấu gạch dưới giữa Custom và Font bây giờ thay đổi thành dấu gạch ngang. May mắn thay, tên của họ phông chữ vẫn giữ nguyên, như "Họ phông chữ tùy chỉnh", vì vậy bây giờ thay vì mã hóa cứng tên phông chữ tôi phải trích xuất từ ​​họ phông chữ như sau:

static NSString *_myCustomFontName; 

+ (NSString *)myCustomFontName 
{ 
    if (!_myCustomFontName) 
    { 
     NSArray *arr = [UIFont fontNamesForFamilyName:@"Custom Font Family"]; 
     // I know I only have one font in this family 
     if ([arr count] > 0) 
      _myCustomFontName = arr[0];   
    } 

    return _myCustomFontName; 
} 

Tôi là không chắc chắn cách một tệp phông chữ trình bày thông tin của nó, nhưng bây giờ tôi đoán tệp phông chữ của tôi (custom font.ttf) chỉ cung cấp tên họ phông chữ "Custom Font Family" và iOS lấy tên phông chữ từ quy tắc nhất định. từ iOS 7 đến iOS 8, vì vậy trước khi chúng ta có Custom_Font-Style, bây giờ chúng ta có Custom-Font-Style.

0

Như đã đề cập trước đây, cách đọc tên phông chữ khác nhau giữa iOS 8 và các phiên bản trước. Tôi đã phải chịu đựng một tấm séc trong để quyết định tên để sử dụng:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8) { 
    OS_SPECIFIC_GOTHIC_FONT = @"New"; 
} else { 
    OS_SPECIFIC_GOTHIC_FONT = @"Highway Gothic"; 
} 

Bạn có thể sử dụng Finder, Get Info và Font Book để tìm các tên gọi khác nhau (iOS 8 sử dụng tiêu đề trong Font Book trong khi phần còn lại sử dụng Tên đầy đủ trong Nhận thông tin)

20

Trong trường hợp của tôi, một giải pháp khác đã hoạt động. Khi tôi thêm phông chữ vào dự án, chúng không được tự động thêm vào tài nguyên gói được biên dịch. Vì vậy, tôi đã phải đi 'Mục tiêu' -> 'Xây dựng các giai đoạn' -> 'Sao chép tài nguyên bó' và thêm tất cả các phông chữ theo cách thủ công. Điều này đã lừa

+0

tuyệt vời .. đã làm việc cho tôi .. +1 –

0

Lars Blumberg câu trả lời trong Swift 3

for family in UIFont.familyNames { 
     print("\(family)") 
     for name: String in UIFont.fontNames(forFamilyName: family) { 
      print("== \(name)") 
     } 
    } 
Các vấn đề liên quan