2013-11-04 11 views

Trả lời

15

Điều này thật thú vị, đây là một tính năng gần như không có giấy tờ, nhưng có vẻ như được sử dụng và sẽ không khiến ứng dụng của bạn bị từ chối. Chỉ cần cố gắng nghiên cứu điều này bản thân tôi đã đưa tôi đến câu hỏi này và không nhiều khác. Tất cả những gì tôi có thể tìm thấy được ghi lại là mã mẫu cho thấy cách sử dụng nó: DownloadFont.

Trình diễn cách tải phông chữ theo yêu cầu trên iOS 6 trở lên.

Trên iOS 6, chúng tôi đã thêm khả năng cho các ứng dụng tải xuống phông chữ theo yêu cầu. Bên cạnh các phông chữ được cài đặt với iOS 6, các ứng dụng có thể cài đặt danh sách các phông chữ bổ sung khi cần thiết.

Phông chữ được liệt kê đã được cấp phép bởi Apple để sử dụng trong iOS, tuy nhiên chúng không đi kèm với phần mềm iOS chuẩn do sử dụng dung lượng đĩa bổ sung. Tôi sẽ giả định rằng điều này sẽ tiếp tục là cách Apple cung cấp phông chữ mới (trừ khi một phần của giao diện người dùng của hệ điều hành sử dụng nó). Ngoài ra, không giống như việc thêm phông chữ bằng cách sử dụng phím UIAppFonts trong Info.plist của bạn, sau khi phông chữ được tải xuống, nó có sẵn cho tất cả ứng dụng để sử dụng.

+0

Dường như Apple cố tình ẩn các phông chữ đó :) – kelin

1

Dưới đây là một ví dụ đơn giản về cách tải xuống không đồng bộ một phông chữ và đặt phông chữ thành UITextView.

- (void)asynchronouslySetFontName:(NSString *)fontName toTextView:(UITextView *)textView { 
    CGFloat size = 24.0f; 
    UIFont *font = [UIFont fontWithName:fontName size:size]; 

    if (font && ([font.fontName compare:fontName] == NSOrderedSame || [font.familyName compare:fontName] == NSOrderedSame)) { 
     textView.font = font; 
     return; 
    } 

    NSMutableDictionary *attrs = [NSMutableDictionary dictionaryWithObject:fontName forKey:kCTFontNameAttribute]; 
    CTFontDescriptorRef desc = CTFontDescriptorCreateWithAttributes((__bridge CFDictionaryRef)attrs); 

    NSMutableArray *descs = [NSMutableArray array]; 
    [descs addObject:(__bridge id)desc]; 
    CFRelease(desc); 

    __weak UITextView *weakTextView = textView; 

    CTFontDescriptorMatchFontDescriptorsWithProgressHandler((__bridge CFArrayRef)descs, NULL, ^(CTFontDescriptorMatchingState state, CFDictionaryRef progressParameter) { 
     if (state == kCTFontDescriptorMatchingDidFinish) { 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       weakTextView.font = [UIFont fontWithName:fontName size:size]; 
      }); 
     } 

     return YES; 
    }); 
} 

Và đây là danh sách tất cả các phông chữ có thể tải xuống. http://iosfontlist.com

Các vấn đề liên quan