Tôi muốn có một ứng dụng bao gồm một phông chữ tùy chỉnh để hiển thị văn bản, tải nó và sau đó sử dụng nó với các UIKit
yếu tố tiêu chuẩn như UILabel
. Điều này có thể không?
Tôi muốn có một ứng dụng bao gồm một phông chữ tùy chỉnh để hiển thị văn bản, tải nó và sau đó sử dụng nó với các UIKit
yếu tố tiêu chuẩn như UILabel
. Điều này có thể không?
Câu trả lời:
iOS 3.2 trở lên hỗ trợ này. Trực tiếp từ tài liệu mới trong iPhone OS 3.2 :
Các
ứng dụng hỗ trợ phông chữ tùy chỉnh Các ứng dụng muốn sử dụng phông chữ tùy chỉnh giờ đây có thể bao gồm các phông chữ đó trong gói ứng dụng của chúng và đăng ký các phông chữ đó với hệ thống bằng cách đưa khóa UIAppFonts vào tệp Info.plist của chúng. Giá trị của khóa này là một chuỗi các chuỗi xác định các tệp phông chữ trong gói của ứng dụng. Khi hệ thống nhìn thấy khóa, nó sẽ tải các phông chữ được chỉ định và cung cấp chúng cho ứng dụng.
Khi các phông chữ đã được đặt trong Info.plist
, bạn có thể sử dụng các phông chữ tùy chỉnh của mình như bất kỳ phông chữ nào khác trong IB hoặc theo chương trình.
Có một chủ đề đang diễn ra trên Diễn đàn Nhà phát triển của Apple:
https://devforums.apple.com/thread/37824 (yêu cầu đăng nhập)
Và đây là một hướng dẫn 3 bước đơn giản và tuyệt vời về cách đạt được điều này (loại bỏ liên kết bị hỏng)
Info.plist
tập tin của bạn được gọi là UIAppFonts
.UIAppFonts
mảngInfo.plist
[UIFont fontWithName:@"CustomFontName" size:12]
để có được phông chữ tùy chỉnh để sử dụng với UILabels và UITextViews , v.v.Ngoài ra: Đảm bảo các phông chữ nằm trong Tài nguyên Gói Sao chép của bạn.
Chỉnh sửa: Kể từ iOS 3.2, chức năng này được tích hợp. Nếu bạn cần hỗ trợ trước 3.2, bạn vẫn có thể sử dụng giải pháp này.
Tôi đã tạo một mô-đun đơn giản giúp mở rộng UILabel
và xử lý tải các tệp .ttf. Tôi đã phát hành nó mã nguồn mở theo giấy phép Apache và đưa nó lên github Tại đây.
Các tập tin quan trọng là FontLabel.h
và FontLabel.m
.
Nó sử dụng một số mã từ câu trả lời của Genericrich .
Duyệt nguồn ở đây.
HOẶC LÀ
Sao chép tập tin phông chữ của bạn vào tài nguyên
Thêm một khóa vào Info.plist
tệp của bạn được gọi là UIAppFonts. ("Phông chữ được cung cấp bởi ứng dụng)
Biến khóa này thành một mảng
Đối với mỗi phông chữ bạn có, hãy nhập tên đầy đủ của tệp phông chữ của bạn (bao gồm cả phần mở rộng) làm các mục vào mảng UIAppFonts
Tiết kiệm Info.plist
Bây giờ trong ứng dụng của bạn, bạn chỉ có thể gọi [UIFont fontWithName:@"CustomFontName" size:15]
để có được phông chữ tùy chỉnh để sử dụng với bạn UILabels
và UITextViews
, vv ...
Có một cách đơn giản để sử dụng phông chữ tùy chỉnh trong iOS 4 .
Chalkduster.ttf
:) vào thư mục Tài nguyên của dự án trong XCode.info.plist
và thêm một khóa mới được gọi là UIAppFonts
. Loại khóa này phải là mảng.Chalkduster.ttf
).[UIFont fontWithName:@"Chalkduster" size:16]
trong ứng dụng của bạn.Thật không may, IB không cho phép khởi tạo nhãn bằng phông chữ tùy chỉnh. Xem câu hỏi này để giải quyết vấn đề này. Giải pháp yêu thích của tôi là sử dụng UILabel
lớp con tùy chỉnh :
@implementation CustomFontLabel
- (id)initWithCoder:(NSCoder *)decoder
{
if (self = [super initWithCoder: decoder])
{
[self setFont: [UIFont fontWithName: @"Chalkduster" size: self.font.pointSize]];
}
return self;
}
@end
Trong Info.plist, thêm mục "Phông chữ được cung cấp bởi ứng dụng" và bao gồm tên phông chữ dưới dạng chuỗi:
Fonts provided by application
Item 0 myfontname.ttf
Item 1 myfontname-bold.ttf
...
Sau đó kiểm tra để đảm bảo phông chữ của bạn được bao gồm bằng cách chạy:
for (NSString *familyName in [UIFont familyNames]) {
for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
NSLog(@"%@", fontName);
}
}
Lưu ý rằng tên tệp ttf của bạn có thể không giống với tên bạn sử dụng khi bạn đặt phông chữ cho nhãn của mình (bạn có thể sử dụng mã ở trên để lấy tham số "fontWithName"):
[label setFont:[UIFont fontWithName:@"MyFontName-Regular" size:18]];
chỉnh sửa: Câu trả lời này không còn tồn tại kể từ iOS3.2; sử dụng UIAppFont
Cách duy nhất tôi có thể tải thành công các tùy chỉnh UIFont
là thông qua khung dịch vụ Đồ họa riêng.
Sau đây sẽ tải tất cả các .ttf
phông chữ trong gói chính của ứng dụng:
BOOL GSFontAddFromFile(const char * path);
NSUInteger loadFonts()
{
NSUInteger newFontCount = 0;
for (NSString *fontFile in [[NSBundle mainBundle] pathsForResourcesOfType:@"ttf" inDirectory:nil])
newFontCount += GSFontAddFromFile([fontFile UTF8String]);
return newFontCount;
}
Khi các phông chữ được tải, chúng có thể được sử dụng giống như các phông chữ do Apple cung cấp:
NSLog(@"Available Font Families: %@", [UIFont familyNames]);
[label setFont:[UIFont fontWithName:@"Consolas" size:20.0f]];
Dịch vụ đồ họa thậm chí có thể được tải trong thời gian chạy trong trường hợp API biến mất trong tương lai:
#import <dlfcn.h>
NSUInteger loadFonts()
{
NSUInteger newFontCount = 0;
NSBundle *frameworkBundle = [NSBundle bundleWithIdentifier:@"com.apple.GraphicsServices"];
const char *frameworkPath = [[frameworkBundle executablePath] UTF8String];
if (frameworkPath) {
void *graphicsServices = dlopen(frameworkPath, RTLD_NOLOAD | RTLD_LAZY);
if (graphicsServices) {
BOOL (*GSFontAddFromFile)(const char *) = dlsym(graphicsServices, "GSFontAddFromFile");
if (GSFontAddFromFile)
for (NSString *fontFile in [[NSBundle mainBundle] pathsForResourcesOfType:@"ttf" inDirectory:nil])
newFontCount += GSFontAddFromFile([fontFile UTF8String]);
}
}
return newFontCount;
}
[NSString sizeWithFont:[UIFont fontWithName:@"customFont" size:14]];
trả về 0 chiều rộng và chiều cao cho bất kỳ phông chữ tùy chỉnh nào tôi đã thử.
Với iOS 8
+ và Xcode 6
+ bạn có thể thực hiện điều này một cách dễ dàng. Dưới đây là các bước:
1) Kéo và thả phông chữ của bạn vào Xcode
thư mục Tệp hỗ trợ. Đừng quên đánh dấu ứng dụng của bạn tại phần Thêm vào mục tiêu . Từ thời điểm này, bạn có thể sử dụng phông chữ này IB
và chọn nó từ phông chữ pallet.
2) Để làm cho phông chữ này có sẵn trong thiết bị của bạn, hãy mở info.plist
và thêm Fonts provided by application
khóa. Nó sẽ chứa khóa Mục 0, bạn phải thêm tên phông chữ của mình làm giá trị. Tên phông chữ có thể thay đổi từ tên tập tin phông chữ của bạn. Nhưng trước tiên, hãy cố gắng thêm tên tệp của bạn trong hầu hết các trường hợp công việc này.
Nếu không, bài viết này luôn giúp tôi.
Đây là đoạn mã nhanh chóng từ bài viết này để giúp bạn tìm tên phông chữ của mình.
func allFonts(){
for family in UIFont.familyNames(){
println(family)
for name in UIFont.fontNamesForFamilyName(family.description)
{
println(" \(name)")
}
}
}
Tôi muốn đề cập rằng, bạn cần thêm các tệp phông chữ vào Giai đoạn xây dựng của mục tiêu , Sao chép tài nguyên gói . Không có nó, bạn sẽ không thấy phông chữ của mình trên thiết bị. Và nó có thể dẫn đến hành vi bất ngờ.
Ví dụ: tôi gặp một bug
, khi UITextField
có phông chữ tùy chỉnh, nhưng phông chữ này không có trong Tài nguyên gói sao chép . Và khi tôi phân biệt viewcontroller
với điều này textfield
, có độ trễ khoảng 4 giây trước khi viewDidLoad
chức năng được gọi. Giải quyết các rắc rối về phông chữ đã loại bỏ sự chậm trễ này. Vì vậy, đề nghị kiểm tra nó hai lần. (rdar: // 20028250) Btw, tôi không thể tạo lại lỗi, nhưng tôi chắc chắn rằng vấn đề là do phông chữ.
Tôi đã làm điều này như thế này:
Tải phông chữ:
- (void)loadFont{
// Get the path to our custom font and create a data provider.
NSString *fontPath = [[NSBundle mainBundle] pathForResource:@"mycustomfont" ofType:@"ttf"];
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithFilename([fontPath UTF8String]);
// Create the font with the data provider, then release the data provider.
customFont = CGFontCreateWithDataProvider(fontDataProvider);
CGDataProviderRelease(fontDataProvider);
}
Bây giờ, trong của bạn drawRect:
, làm một cái gì đó như thế này:
-(void)drawRect:(CGRect)rect{
[super drawRect:rect];
// Get the context.
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, rect);
// Set the customFont to be the font used to draw.
CGContextSetFont(context, customFont);
// Set how the context draws the font, what color, how big.
CGContextSetTextDrawingMode(context, kCGTextFillStroke);
CGContextSetFillColorWithColor(context, self.fontColor.CGColor);
UIColor * strokeColor = [UIColor blackColor];
CGContextSetStrokeColorWithColor(context, strokeColor.CGColor);
CGContextSetFontSize(context, 48.0f);
// Create an array of Glyph's the size of text that will be drawn.
CGGlyph textToPrint[[self.theText length]];
// Loop through the entire length of the text.
for (int i = 0; i < [self.theText length]; ++i) {
// Store each letter in a Glyph and subtract the MagicNumber to get appropriate value.
textToPrint[i] = [[self.theText uppercaseString] characterAtIndex:i] + 3 - 32;
}
CGAffineTransform textTransform = CGAffineTransformMake(1.0, 0.0, 0.0, -1.0, 0.0, 0.0);
CGContextSetTextMatrix(context, textTransform);
CGContextShowGlyphsAtPoint(context, 20, 50, textToPrint, [self.theText length]);
}
Về cơ bản, bạn phải thực hiện một số lực lượng mạnh mẽ lặp lại văn bản và tìm kiếm số ma thuật để tìm phần bù của bạn (ở đây, xem tôi sử dụng 29) trong phông chữ, nhưng nó hoạt động.
Ngoài ra, bạn phải đảm bảo phông chữ có thể nhúng hợp pháp. Hầu hết không có và có luật sư chuyên về loại điều này, vì vậy được cảnh báo.
CGContextShowTextAtPoint()
- mặc dù nó không hoạt động với UTF-8.
Có, bạn có thể bao gồm các phông chữ tùy chỉnh. Tham khảo tài liệu về UIFont, cụ thể, fontWithName:size:
phương pháp.
1) Đảm bảo bạn bao gồm phông chữ trong thư mục tài nguyên của bạn.
2) "Tên" của phông chữ không nhất thiết phải là tên tệp.
3) Đảm bảo bạn có quyền hợp pháp để sử dụng phông chữ đó. Bằng cách đưa nó vào ứng dụng của bạn, bạn cũng phân phối nó và bạn cần có quyền làm điều đó.
Nếu bạn đang sử dụng xcode 4.3
, bạn phải thêm phần font
bên Build Phase
dưới Copy Bundle Resources
, theo https://stackoverflow.com/users/1292829/arne trong chuỗi, Phông chữ tùy chỉnh Xcode 4.3 . Điều này làm việc cho tôi, đây là các bước tôi đã thực hiện để phông chữ tùy chỉnh hoạt động trong ứng dụng của mình:
OTF
(hoặc TTF
) vào một nhóm mới do tôi tạo và chấp nhận lựa chọn của xcode copying the files over to the project folder
.UIAppFonts
mảng với phông chữ của bạn được liệt kê dưới dạng các mục trong mảng. Chỉ là names
, không phải phần mở rộng (ví dụ " GothamBold
", " GothamBold-Italic
").project name
đường ở phía trên cùng Project Navigator
bên trái của màn hình.Build Phases
tab xuất hiện trong khu vực chính của xcode.Copy Bundle Resources
" và nhấp vào "+"
để thêm phông chữ."+"
.add to the project
.Đây là hướng dẫn từng bước làm thế nào để làm điều đó. Không cần thêm thư viện hoặc bất kỳ mã hóa đặc biệt.
http://shang-liang.com/blog/custom-fonts-in-ios4/
Hầu hết thời gian vấn đề là với phông chữ không phải là phương pháp. Cách tốt nhất để làm điều đó là sử dụng một phông chữ chắc chắn sẽ hoạt động, như verdana hoặc geogia. Sau đó thay đổi sang phông chữ dự định. Nếu nó không hoạt động, có thể tên phông chữ không đúng hoặc phông chữ không phải là một phông chữ được hình thành tốt.
Rất dễ dàng để thêm một phông chữ mới trên Ứng dụng iOS hiện tại của bạn.
Bạn chỉ cần thêm phông chữ, ví dụ font.ttf vào Thư mục tài nguyên của bạn.
Mở ứng dụng của bạn info.plist
. Thêm một hàng mới là "Phông chữ được cung cấp bởi ứng dụng" và nhập tên phông chữ là font.ttf.
Và khi cài đặt phông chữ, hãy làm setFont:"corresponding Font Name"
Bạn có thể kiểm tra xem phông chữ của bạn có được thêm hay không NSArray *check = [UIFont familyNames];
.
Nó trả về tất cả các phông chữ ứng dụng của bạn hỗ trợ.
Tôi muốn giới thiệu theo một trong những hướng dẫn ngắn yêu thích của tôi ở đây: http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/ từ đó thông tin này xuất hiện.
Bước 1 - Kéo .ttf hoặc .otf của bạn từ Finder vào Dự án của bạn
LƯU Ý - Đảm bảo nhấp vào hộp để 'Thêm vào mục tiêu' trên mục tiêu ứng dụng chính của bạn
Nếu bạn quên nhấp để thêm nó vào mục tiêu của mình thì hãy nhấp vào tệp phông chữ trong phân cấp dự án của bạn và trên bảng bên phải, nhấp vào mục tiêu ứng dụng chính trong phần Thành viên mục tiêu
Để đảm bảo phông chữ của bạn là một phần của mục tiêu ứng dụng của bạn, hãy đảm bảo chúng xuất hiện trong Tài nguyên gói sao chép của bạn trong giai đoạn xây dựng
Bước 2 - Thêm tên tệp phông chữ vào Plist của bạn
Chuyển đến Thuộc tính mục tiêu iOS tùy chỉnh trong Phần thông tin của bạn và thêm khóa vào các mục trong phần đó được gọi Fonts provided by application
(bạn sẽ thấy nó xuất hiện dưới dạng tùy chọn khi bạn nhập và nó sẽ tự thiết lập thành một mảng. Nhấp vào mũi tên nhỏ để mở các mục mảng và nhập tên của các tệp .ttf hoặc .otf mà bạn đã thêm để cho ứng dụng của bạn biết rằng đây là các tệp phông chữ bạn muốn có sẵn
LƯU Ý - Nếu ứng dụng của bạn gặp sự cố ngay sau bước này, hãy kiểm tra chính tả của bạn trên các mục bạn thêm vào đây
Bước 3 - Tìm hiểu tên các phông chữ của bạn để bạn có thể gọi chúng
Thông thường, tên phông chữ mà ứng dụng của bạn nhìn thấy khác với những gì bạn nghĩ nó dựa trên tên tệp cho phông chữ đó, hãy đặt mã này vào mã của bạn và xem qua nhật ký mà ứng dụng của bạn thực hiện để xem tên phông chữ nào sẽ gọi trong mã của bạn
Nhanh
for family: String in UIFont.familyNames(){
print("\(family)")
for names: String in UIFont.fontNamesForFamilyName(family){
print("== \(names)")
}
}
Mục tiêu C
for (NSString* family in [UIFont familyNames]){
NSLog(@"%@", family);
for (NSString* name in [UIFont fontNamesForFamilyName: family]){
NSLog(@" %@", name);
}
}
Nhật ký của bạn sẽ trông giống như thế này:
Bước 4 - Sử dụng phông chữ tùy chỉnh mới của bạn bằng tên từ Bước 3
Nhanh
label.font = UIFont(name: "SourceSansPro-Regular", size: 18)
Mục tiêu C
label.font = [UIFont fontWithName:@"SourceSansPro-Regular" size:18];
Vẫn chưa ra mắt, nhưng phiên bản tiếp theo của cocos2d (khung trò chơi 2d) sẽ hỗ trợ phông chữ bitmap có độ dài thay đổi như bản đồ nhân vật.
http://code.google.com.vn/p/cocos2d-iphone/issues/detail?id=317
Tác giả không có ngày phát hành đóng đinh cho phiên bản này, nhưng tôi đã thấy một bài đăng cho biết nó sẽ có trong một hoặc hai tháng tới.
Một thông báo quan trọng: Bạn nên sử dụng "Tên PostScript" được liên kết với phông chữ, không phải tên đầy đủ hoặc Tên gia đình của nó. Tên này thường có thể khác với tên bình thường của phông chữ.
làm theo bước này
1) Sao chép phông chữ của bạn trong dự án của bạn
2) mở .plist
tệp của bạn ở chế độ mã nguồn ... (Lưu ý- Không mở info.plist
)
3) Trước đó - Nhấp chuột phải vào phông chữ của bạn và mở nó trong fontforge hoặc trình chỉnh sửa tương tự và install
nó trong hệ thống của bạn, Nó phải làinstall
4) Nhập cái này
<key>UIAppFonts</key>
<array>
<string>MyriadPro.otf</string>
</array>
5) Nhập mã này vào class .m
[lblPoints setFont:[UIFont fontWithName:@"Myriad Pro" size:15.0]];
Ở đây lblPoints sẽ được thay đổi theo UILabel
Làm xong!! Nếu vẫn phông chữ của bạn không hoạt động, trước tiên hãy kiểm tra khả năng tương thích phông chữ của bạn
info.plist
?
Có lẽ tác giả đã quên đặt cho phông chữ một tên Mac FOND ?
Bạn cũng có thể thử tùy chọn "Apple" trong hộp thoại xuất.
TUYÊN BỐ TỪ CHỐI : Tôi không phải là nhà phát triển iPhone!
Tôi đã thử các đề xuất khác nhau trên trang này trên iOS 3.1.2 và đây là những kết luận của tôi:
Chỉ cần sử dụng [UIFont fontWithName:size:]
với các phông chữ trong thư mục Tài nguyên sẽ không hoạt động, ngay cả khi tên FOND được đặt bằng FontForge.
[UIFont fontWithName:size:]
sẽ hoạt động nếu phông chữ được tải trước bằng GSFontAddFromFile. Nhưng GSFontAddFromFile
không phải là một phần của iOS 3.1.2 nên nó phải được tải động theo mô tả của @rpetrich.
Tra cứu ATSApplicationFontsPath
Một mục nhập đơn giản cho phép bạn đưa (các) tệp phông chữ vào thư mục tài nguyên ứng dụng của bạn và chúng "chỉ hoạt động" trong ứng dụng của bạn.
Tôi đã kết hợp một số lời khuyên trên trang này thành một cái gì đó phù hợp với tôi trên iOS 5.
Đầu tiên, bạn phải thêm phông chữ tùy chỉnh vào dự án của bạn. Sau đó, bạn cần làm theo lời khuyên của @iPhoneDev và thêm phông chữ vào tệp info.plist của bạn.
Sau khi bạn làm điều đó, điều này hoạt động:
UIFont *yourCustomFont = [UIFont fontWithName:@"YOUR-CUSTOM-FONT-POSTSCRIPT-NAME" size:14.0];
[yourUILabel setFont:yourCustomFont];
Tuy nhiên, bạn cần biết tên Postcript của phông chữ của bạn. Chỉ cần làm theo lời khuyên của @Daniel Wood và nhấn lệnh-i khi bạn đang ở trong FontBook.
Sau đó, thưởng thức phông chữ tùy chỉnh của bạn.
Trước tiên, thêm phông chữ ở định dạng .odt vào tài nguyên của bạn, trong trường hợp này, chúng tôi sẽ sử dụng DINEngschriftStd.otf, sau đó sử dụng mã này để gán phông chữ cho nhãn
[theUILabel setFont:[UIFont fontWithName:@"DINEngschriftStd" size:21]];
Để đảm bảo phông chữ của bạn được tải vào dự án, chỉ cần gọi
NSLog(@"Available Font Families: %@", [UIFont familyNames]);
Trên .plist bạn phải khai báo phông chữ. Chỉ cần thêm bản ghi 'Phông chữ được cung cấp bởi ứng dụng' và thêm chuỗi 0 mục với tên của phông chữ (DINEngschriftStd.otf)
Đối với iOS 3.2 trở lên: Sử dụng các phương thức được cung cấp bởi một số ở trên, đó là:
[UIFont fontWithName:@"Real Font Name" size:16]
trong ứng dụng của bạn.NHƯNG "Tên phông chữ thực" không phải lúc nào cũng là tên bạn thấy trong Fontbook. Cách tốt nhất là hỏi thiết bị của bạn xem phông chữ nào và tên chính xác là gì.
Tôi sử dụng uifont-name-Grabber được đăng tại: uifont-name-Grabber
Chỉ cần thả các phông chữ bạn muốn vào dự án xcode, thêm tên tệp vào phần chính của nó và chạy nó trên thiết bị bạn đang xây dựng, nó sẽ gửi email cho bạn một danh sách phông chữ hoàn chỉnh bằng cách sử dụng các tên mà bạn UIFont fontWithName:
mong đợi.
Có một cách mới để sử dụng phông chữ tùy chỉnh, bắt đầu với iOS 4.1. Nó cho phép bạn tải phông chữ một cách linh hoạt, từ các tệp có trong ứng dụng, dữ liệu đã tải xuống hoặc những gì có bạn. Nó cũng cho phép bạn tải phông chữ khi bạn cần chúng, trong khi phương thức cũ tải tất cả chúng khi khởi động ứng dụng, có thể mất nhiều thời gian nếu bạn có nhiều phông chữ.
Phương pháp mới được mô tả tại ios-Dynamic-font-load
Bạn sử dụng CTFontManagerRegisterGraphicsFont
hàm, cung cấp cho nó một bộ đệm với dữ liệu phông chữ của bạn. Sau đó, nó có sẵn cho UIFont
và lượt xem web, giống như phương pháp cũ. Đây là mã mẫu từ liên kết đó:
NSData *inData = /* your font-file data */;
CFErrorRef error;
CGDataProviderRef provider = CGDataProviderCreateWithCFData((CFDataRef)inData);
CGFontRef font = CGFontCreateWithDataProvider(provider);
if (! CTFontManagerRegisterGraphicsFont(font, &error)) {
CFStringRef errorDescription = CFErrorCopyDescription(error)
NSLog(@"Failed to load font: %@", errorDescription);
CFRelease(errorDescription);
}
CFRelease(font);
CFRelease(provider);
kCTFontManagerErrorAlreadyRegistered
"Tệp đã được đăng ký trong phạm vi được chỉ định." developer.apple.com/l
Thêm phông chữ cần thiết vào dự án của bạn (giống như thêm hình ảnh, chỉ cần kéo vào Xcode), đảm bảo rằng chúng được nhắm mục tiêu cho dự án của bạn
thêm phương thức này và tải phông chữ tùy chỉnh (được khuyến nghị trong appDelegate didFinishLaunchingWithOptions
)
func loadFont(filePath: String) {
let fontData = NSData(contentsOfFile: filePath)!
let dataProvider = CGDataProviderCreateWithCFData(fontData)
let cgFont = CGFontCreateWithDataProvider(dataProvider)!
var error: Unmanaged<CFError>?
if !CTFontManagerRegisterGraphicsFont(cgFont, &error) {
let errorDescription: CFStringRef = CFErrorCopyDescription(error!.takeUnretainedValue())
print("Unable to load font: %@", errorDescription, terminator: "")
}
}
Sử dụng ví dụ:
if let fontPath = NSBundle.mainBundle().pathForResource("My-Font", ofType: "ttf"){
loadFont(fontPath)
}
Sử dụng phông chữ:
UIFont(name: "My-Font", size: 16.5)
Mặc dù một số câu trả lời ở trên là chính xác, tôi đã viết một hướng dẫn trực quan chi tiết cho những người vẫn gặp vấn đề với phông chữ.
Các giải pháp ở trên cho bạn biết thêm phông chữ vào bảng và sử dụng
[self.labelOutlet setFont:[UIFont fontWithName:@"Sathu" size:10]];
là những người chính xác. Xin vui lòng sử dụng bất kỳ cách hackish khác. Nếu bạn vẫn gặp vấn đề với việc tìm tên phông chữ và thêm chúng, đây là hướng dẫn -
vâng, bạn có thể sử dụng phông chữ tùy chỉnh trong ứng dụng của bạn
từng bước sau đó:
Thêm tệp phông chữ tùy chỉnh của bạn vào dự án của bạn trong tệp hỗ trợ
Thêm khóa vào tệp Info.plist của bạn được gọi là UIAppFonts.
Biến khóa này thành một mảng
Đối với mỗi phông chữ bạn có, hãy nhập tên đầy đủ của tệp phông chữ của bạn (bao gồm cả phần mở rộng) làm các mục vào mảng UIAppFonts
Lưu thông tin trên phông chữ tùy chỉnh và xem tên phông chữ phía trên một cách cẩn thận đang đến và sao chép phông chữ này, dán, ở đây [UIFont fontWithName: @ "ở đây qua Tên phông chữ tùy chỉnh của bạn" size: 20]
tôi hy vọng bạn sẽ nhận được câu trả lời đúng
vâng, bạn có thể sử dụng phông chữ tùy chỉnh trong ứng dụng của bạn
từng bước sau đó:
Info.plist
tệp của bạn được gọi là UIAppFonts.Info.plist
ngay trong ứng dụng của bạn, bạn chỉ cần gọi [UIFont fontWithName:@"your Custom font Name" size:20]
để có được phông chữ tùy chỉnh để sử dụng vớiUILabels
Sau khi áp dụng điều này nếu bạn không nhận được phông chữ chính xác thì bạn nhấp đúp chuột vào phông chữ tùy chỉnh và xem tên phông chữ phía trên một cách cẩn thận và sao chép phông chữ này, dán, ở đây [UIFont fontWithName:@" here past your Custom font Name" size:20]
tôi hy vọng bạn sẽ nhận được câu trả lời chính xác