ฉันสามารถฝังแบบอักษรที่กำหนดเองในแอปพลิเคชั่น iPhone ได้หรือไม่?


772

ผมอยากที่จะมีแอปรวมถึงตัวอักษรที่กำหนดเองสำหรับการแสดงผลข้อความโหลดแล้วใช้กับมาตรฐานองค์ประกอบเช่นUIKit UILabelเป็นไปได้ไหม


5
ในตอนหนึ่งของ CS193p (การพัฒนา Application iPhone) บรรยายใน Stanford, Evan ตั้งข้อสังเกตว่าการติดตั้งแบบอักษรของคุณเองบนอุปกรณ์คือ“จำนวนมากของการทำงาน” ซึ่งหมายถึงการที่อย่างน้อยก็เป็นไปได้ :-)
Ilya Birman

2
iPhone 3.2 อนุญาตแบบอักษรที่กำหนดเอง แต่เป็น iPad เท่านั้น (ดูคำตอบด้านล่าง)
samvermette

6
ฉันใช้ภาพในตอนท้าย
Airsource Ltd

2
ว้าว ... หลังจากนั้นทั้งหมดคำตอบก็ยังคงเป็นภาพ ... ไม่น่าเชื่อ ฉันหวังเป็นอย่างยิ่งว่าจะได้ใช้งานฟอนต์ที่กำหนดเองได้อย่างสมบูรณ์ด้วยความสามารถเช่นเดียวกับฟอนต์ระบบ อนิจจา ...
d2burke

1
ฉันได้ปรับแต่งคำถามเดิมอย่างมากเพื่อสะท้อนถึงทศวรรษที่ผ่านไปตั้งแต่ฉันถาม ฉันขอแนะนำให้ทุกคนตัดความคิดเห็นและคำตอบของพวกเขาอย่างเหมาะสม
Airsource Ltd

คำตอบ:


646

iOS 3.2 และใหม่กว่ารองรับสิ่งนี้ ส่งตรงจากเอกสารใหม่ของ iPhone OS 3.2 :

Custom Font Support
Applications ที่ต้องการใช้ฟอนต์ที่กำหนดเองสามารถรวมฟอนต์เหล่านั้นในบันเดิลของแอพพลิเคชั่นและลงทะเบียนฟอนต์เหล่านั้นกับระบบโดยการรวมคีย์ UIAppFonts ในไฟล์ Info.plist ค่าของคีย์นี้คืออาร์เรย์ของสตริงที่ระบุไฟล์ฟอนต์ในชุดของแอปพลิเคชัน เมื่อระบบเห็นคีย์มันจะโหลดแบบอักษรที่ระบุและทำให้ใช้ได้กับแอปพลิเคชัน

เมื่อตั้งค่าฟอนต์Info.plistแล้วคุณสามารถใช้ฟอนต์ที่คุณกำหนดเองเป็นฟอนต์อื่น ๆ ใน IB หรือโดยทางโปรแกรม

มีเธรดอย่างต่อเนื่องในฟอรัมนักพัฒนา Apple:
https://devforums.apple.com/thread/37824 (ต้องเข้าสู่ระบบ)

และนี่คือการสอน 3 ขั้นตอนที่ยอดเยี่ยมและเรียบง่ายเกี่ยวกับการบรรลุเป้าหมายนี้ (ลบลิงก์ที่ขาดออก)

  1. เพิ่มไฟล์แบบอักษรที่กำหนดเองลงในโครงการของคุณโดยใช้ Xcode เป็นทรัพยากร
  2. เพิ่มคีย์ให้คุณไฟล์ที่เรียกว่าInfo.plistUIAppFonts
  3. กำหนดให้คีย์นี้เป็นอาร์เรย์
  4. สำหรับแต่ละฟอนต์ที่คุณมีให้ป้อนชื่อเต็มของไฟล์ฟอนต์ของคุณ (รวมถึงส่วนขยาย) เป็นรายการในUIAppFontsอาร์เรย์
  5. บันทึก Info.plist
  6. ตอนนี้ในใบสมัครของคุณคุณก็สามารถโทรไป[UIFont fontWithName:@"CustomFontName" size:12]ที่จะได้รับตัวอักษรที่กำหนดเองเพื่อใช้งานร่วมกับคุณUILabelsและUITextViewsฯลฯ ...

นอกจากนี้: ตรวจสอบให้แน่ใจว่าแบบอักษรอยู่ในทรัพยากรชุดสำเนาของคุณ


14
นี่คือการสอนทีละขั้นตอนสำหรับ iOS4: blog.beefyapps.com/2010/06/custom-fonts-in-ios-4
pm_labs

15
บทช่วยสอนนี้ดีมาก shang-liang.com/blog/custom-fonts-in-ios4 ที่สำคัญอาร์กิวเมนต์ NSString ไปที่ [UIFont fontWithName: ... ] เป็นชื่อระบบปฏิบัติการสำหรับตัวอักษรมากกว่าชื่อไฟล์
Willster

152
ก่อนใครจะใช้เวลา 3 ชั่วโมงในการติดตั้งฟอนต์ฟอร์เรซเพื่อค้นหาชื่อจริงของตัวอักษรที่ iOS ต้องการ ฉันจะชี้ให้เห็นว่าคุณสามารถกด Cmd + I บนตัวอักษรในสมุดแบบอักษรเพื่อค้นหาข้อมูลนี้
Daniel Wood

42
หลังจากดิ้นรนเพื่อให้ได้ชื่อแบบอักษรที่ถูกต้องฉันเพิ่งระบุรายการแบบอักษรที่ติดตั้งและพบว่า มีประโยชน์มาก นี่คือรหัส: สำหรับ (NSString * familyName ใน [UIFont familyNames]) {NSLog (@ "Family% @", familyName); NSLog (@ "Names =% @", [UIFont fontNamesForFamilyName: familyName]); }
Steve Potter

26
หากรหัสของคุณใช้งานไม่ได้ตรวจสอบให้แน่ใจว่าคุณพบไฟล์ฟอนต์ปรากฏใน "Build Phases" -> "Copy Bundle Resouces"
Mickey

299

แก้ไข: ตั้งแต่ iOS 3.2 ฟังก์ชั่นนี้สร้างขึ้นมาหากคุณต้องการรองรับ pre-3.2 คุณยังคงสามารถใช้โซลูชันนี้ได้

ฉันสร้างโมดูลง่าย ๆ ที่ขยายUILabelและจัดการโหลดไฟล์. ttf ฉันปล่อยโอเพนซอร์สภายใต้ใบอนุญาต Apache และวางไว้บน github ที่นี่

ไฟล์ที่สำคัญและFontLabel.hFontLabel.m

มันใช้บางส่วนของรหัสจากคำตอบของ Genericrich

ค้นหาแหล่งที่มาที่นี่

หรือ

  • คัดลอกไฟล์ฟอนต์ของคุณลงในแหล่งข้อมูล

  • เพิ่มรหัสลงในInfo.plistไฟล์ของคุณชื่อ UIAppFonts ("แบบอักษรให้บริการโดยแอปพลิเคชัน)

  • กำหนดให้คีย์นี้เป็นอาร์เรย์

  • สำหรับแต่ละฟอนต์ที่คุณมีให้ป้อนชื่อเต็มของไฟล์ฟอนต์ (รวมถึงส่วนขยาย) เป็นไอเท็มไปยังอาร์เรย์ UIAppFonts

  • บันทึก Info.plist

  • ในแอปพลิเคชันของคุณคุณสามารถโทรหา[UIFont fontWithName:@"CustomFontName" size:15]แบบอักษรที่กำหนดเองเพื่อใช้กับของคุณUILabelsและUITextViewsอื่น ๆ ...

สำหรับข้อมูลเพิ่มเติม


2
ฉันลองใช้รหัสของคุณแล้ว แต่มันล้มเหลวบ่อยครั้งขึ้นอยู่กับตัวอักษร ตัวอย่างเช่นลองใช้แอฟริกันหรือ Tiki อักษรจากที่นี่fontspace.com/category/tiki
4thSpace

2
ห้องสมุดนี้ใช้งานได้ดี ฉันต้องการความช่วยเหลือเกี่ยวกับระยะห่างแนวตั้งว่า ไม่สามารถหาวิธีที่จะทำ ดังนั้นฉันมีข้อความนี้หมายเลขของหมายเลข = 3; ฉันจะควบคุมระยะห่างแนวตั้งระหว่างบรรทัดที่ 1 และบรรทัดที่ 2 และบรรทัดที่ 3 ได้อย่างไร ขอบคุณ Tee
teepusink

2
@commanda Hello commanda ลิงค์ที่คุณให้ไว้ในคำตอบดูเหมือนจะไม่สามารถใช้งานได้
Parth Bhatt

5
@ParthBhatt คุณควรใช้โซลูชันที่มีให้ในstackoverflow.com/a/2616101/21447แทน FontLabel เนื่องจากตอนนี้ CocoaTouch มีฟังก์ชั่นการใช้งานนี้ให้บริการ
commanda

2
@ParthBhatt: ฉันไม่รู้ว่าทำไม repo ไม่มีโฮสต์อยู่ที่ zynga อีกต่อไป แต่มีให้ที่github.com/kballard/fontlabel
Lily Ballard

116

มีวิธีที่ง่ายต่อการใช้แบบอักษรที่กำหนดเองในเป็นiOS 4

  1. เพิ่มไฟล์ฟอนต์ของคุณ (ตัวอย่างเช่นChalkduster.ttf) ไปยังโฟลเดอร์Resourcesของโครงการใน XCode
  2. เปิดและเพิ่มคีย์ใหม่ที่เรียกว่าinfo.plist UIAppFontsประเภทของคีย์นี้ควรเป็นอาร์เรย์
  3. เพิ่มชื่อแบบอักษรที่กำหนดเองของคุณในอาร์เรย์นี้รวมถึงส่วนขยาย ( Chalkduster.ttf)
  4. ตอนนี้คุณสามารถใช้[UIFont fontWithName:@"Chalkduster" size:16]ในแอปพลิเคชันของคุณ

น่าเสียดายที่ IB ไม่อนุญาตให้เริ่มต้นป้ายกำกับด้วยแบบอักษรที่กำหนดเอง ดูคำถามนี้เพื่อแก้ปัญหานี้ ทางออกที่ฉันชอบคือการใช้UILabelคลาสย่อยที่กำหนดเอง:

@implementation CustomFontLabel

- (id)initWithCoder:(NSCoder *)decoder
{
    if (self = [super initWithCoder: decoder])
    {
        [self setFont: [UIFont fontWithName: @"Chalkduster" size: self.font.pointSize]];
    }
    return self;
}

@end

3
ดูเหมือนว่าจะได้รับการสนับสนุนกลับไปที่ 3.2 ไม่ใช่แค่ 4.0+
Jesse Rusak

1
ขอบคุณ! ปัญหาที่ฉันมีอยู่ก็คือแบบอักษรที่กำหนดเองดูเหมือนจะเอียงเล็กน้อย (พื้นที่เพิ่มเติมด้านล่าง) เทียบกับแบบในตัวของพวกเขา ฉันได้ลองใช้ FontLabel repo จาก GitHub ซึ่งช่วยได้บ้าง แต่ก็ไม่ตลอดเวลา
Joe D'Andrea

12
มันน่าสังเกตว่าสตริงที่คุณส่งไปยัง UIFont Constructor ไม่ใช่ชื่อไฟล์ลบส่วนขยายของชื่อภายในของแบบอักษร ฉันมีปัญหาในการโหลดแบบอักษรพร้อมชื่อไฟล์ที่สั้นลง เมื่อฉันใช้ชื่อแบบอักษรทั้งหมดตามที่มีอยู่ในไฟล์แบบอักษรที่โหลดได้ดี
slayton

5
Slayton ที่เพิ่งพูดไปนั้นสำคัญมาก [UIFont fontWithName: คาดว่า "ชื่อเต็ม" ของแบบอักษรซึ่งสามารถมองเห็นได้โดยเปิดขึ้นในสมุดแบบอักษรและเลือก: ดูตัวอย่าง -> แสดงข้อมูลแบบอักษร
electromaggot

51

ใน Info.plist ให้เพิ่มรายการ "แบบอักษรที่จัดทำโดยแอปพลิเคชัน" และรวมชื่อแบบอักษรเป็นสตริง:

Fonts provided by application
           Item 0        myfontname.ttf
           Item 1        myfontname-bold.ttf
           ...

จากนั้นตรวจสอบเพื่อให้แน่ใจว่าแบบอักษรของคุณรวมอยู่ในการเรียกใช้:

for (NSString *familyName in [UIFont familyNames]) {
    for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
         NSLog(@"%@", fontName);
    }
}

โปรดทราบว่าชื่อไฟล์ ttf ของคุณอาจไม่ใช่ชื่อเดียวกับที่คุณใช้เมื่อคุณตั้งค่าแบบอักษรสำหรับป้ายกำกับของคุณ (คุณสามารถใช้รหัสด้านบนเพื่อรับพารามิเตอร์ "fontWithName"):

[label setFont:[UIFont fontWithName:@"MyFontName-Regular" size:18]];

36

แก้ไข: คำตอบนี้หมดอายุเมื่อ iOS3.2; ใช้ UIAppFonts

วิธีเดียวที่ฉันสามารถโหลดUIFonts กำหนดเองได้สำเร็จคือผ่านเฟรมเวิร์ก GraphicsServices ส่วนตัว

ต่อไปนี้จะโหลด.ttfแบบอักษรทั้งหมดในชุดข้อมูลหลักของแอปพลิเคชัน:

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;
}

เมื่อโหลดฟอนต์แล้วจะสามารถใช้ฟอนต์ได้เหมือนกับฟอนต์ที่ Apple จัดหาให้:

NSLog(@"Available Font Families: %@", [UIFont familyNames]);
[label setFont:[UIFont fontWithName:@"Consolas" size:20.0f]];

GraphicsServices สามารถโหลดได้ที่ runtime ในกรณีที่ API หายไปในอนาคต:

#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;
}

หมายเหตุสำหรับผู้ที่สงสัยว่ามันใช้งานได้ แต่คุณจะต้องเรียกใช้ loadFonts ก่อนที่จะใช้ฟอนต์ - ดูเหมือนว่าพวกมันจะไม่สามารถโหลดได้ตลอดทั้งแอปพลิเคชัน
พิกเซล

ใน OS 3.0 คุณต้องใช้ตัวอย่างที่สองอย่างแน่นอนอย่าลืมการนำเข้า ทำงานได้ดีสำหรับฉัน
M. Ryan

หมายเหตุอื่น - นี่คือกรอบงานส่วนตัวและโหลดแบบไดนามิก ... ซึ่งทั้งคู่มีแนวโน้มที่จะหยุดการยอมรับแอปของคุณใน AppStore
พิกเซล

ข้อสรุปคืออะไร? ทางเลือกอื่นสำหรับวิธีนี้คืออะไร?
Raj Pawan Gumdal

1
ควรทราบด้วยว่า[NSString sizeWithFont:[UIFont fontWithName:@"customFont" size:14]];ส่งคืนความกว้างและความสูง 0 สำหรับแบบอักษรที่กำหนดเองใด ๆ ที่ฉันได้ลอง
ลุคแมคนีเซ

34

ด้วยiOS 8+ และXcode 6+ คุณสามารถทำสิ่งนี้ได้อย่างง่ายดาย นี่คือขั้นตอน:

1) ลากแล้วปล่อยแบบอักษรของคุณไปยังXcodeโฟลเดอร์สนับสนุนไฟล์ อย่าลืมที่จะทำเครื่องหมายของแอปที่เพิ่มเป้าหมายส่วน จากช่วงเวลานี้คุณสามารถใช้แบบอักษรนี้IBและเลือกจากแบบอักษรพาเลท

ป้อนคำอธิบายรูปภาพที่นี่

2) ในการทำให้แบบอักษรนี้พร้อมใช้งานในอุปกรณ์ของคุณให้เปิดinfo.plistและเพิ่มFonts provided by applicationรหัส มันจะมีคีย์รายการ 0 คุณต้องเพิ่มชื่อตัวอักษรของคุณเป็นค่า ชื่อแบบอักษรอาจแตกต่างจากชื่อไฟล์แบบอักษรของคุณ แต่ก่อนอื่นลองเพิ่มชื่อไฟล์ของคุณในกรณีส่วนใหญ่งานนี้

ป้อนคำอธิบายรูปภาพที่นี่

ถ้าไม่บทความนี้ช่วยฉันเสมอ

นี่คือตัวอย่างรหัสจากบทความนี้ที่จะช่วยคุณค้นหาชื่อตัวอักษรของคุณ

func allFonts(){

   for family in UIFont.familyNames(){

       println(family)


       for name in UIFont.fontNamesForFamilyName(family.description)
       {
           println("  \(name)")
       }

   }

}

แก้ไข

ฉันต้องการที่จะพูดถึงว่าคุณต้องเพิ่มไฟล์ตัวอักษรที่คุณเฟสรูปร่างของเป้าหมาย , คัดลอกทรัพยากร Bundle หากไม่มีคุณจะไม่เห็นแบบอักษรของคุณบนอุปกรณ์ และอาจนำไปสู่พฤติกรรมที่ไม่คาดคิด

ตัวอย่างเช่นผมพบbugเมื่อUITextFieldมีอักษรที่กำหนดเอง แต่ตัวอักษรนี้ไม่ได้อยู่ในการคัดลอกทรัพยากร Bundle และเมื่อฉันทำตามviewcontrollerด้วยสิ่งนี้textfieldจะมีความล่าช้าประมาณ 4 วินาทีก่อนviewDidLoadหน้าที่จะเรียกใช้ การแก้ไขปัญหาแบบอักษรลบความล่าช้านี้ ดังนั้นแนะนำให้ตรวจสอบสองครั้ง (rdar: // 20028250) Btw ฉันไม่สามารถทำซ้ำข้อบกพร่องได้ แต่ฉันแน่ใจว่าปัญหาเกิดจากตัวอักษร


1
เพียงแค่ทราบ แบบอักษรที่กำหนดเองไม่สามารถใช้งานได้ใน LaunchScreens แม้ว่าการกำหนดค่าอย่างถูกต้องใน IB ซึ่งอาจเป็นตรรกะ
ริเวร่า

@Rivera ว้าวบันทึกที่ดี! ไม่ทราบว่า ทางเลือกที่เป็นไปได้คือใช้ UIImage กับข้อความแทนฉันคิดว่า
Dima Deplov

@ Rivera ขอบคุณสำหรับข้อมูลนั้น - มันจัดทำเป็นเอกสารทุกที่ไหม? ฉันกำลังข้ามขั้นตอนหลายครั้งโดยคิดว่าฉันพลาดขั้นตอนหนึ่งไปแล้ว
spongessuck

@spongessuck ไม่แน่ใจเกี่ยวกับคำถามของคุณ แต่มีบางเอกสารdeveloper.apple.com/library/ios/documentation/StringsTextFonts/...
Dima Deplov

27

ฉันทำสิ่งนี้แล้ว:

โหลดแบบอักษร:

- (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); 
}

ในตอนนี้คุณdrawRect:ทำสิ่งนี้:

-(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]);
}

โดยพื้นฐานแล้วคุณต้องใช้กำลังดุร้ายกำลังวนลูปผ่านข้อความและการฟาดฟันด้วยหมายเลขเวทย์มนตร์เพื่อค้นหาออฟเซ็ตของคุณ (ที่นี่เห็นฉันใช้ 29) ในแบบอักษร แต่ใช้งานได้

นอกจากนี้คุณต้องตรวจสอบให้แน่ใจว่าแบบอักษรนั้นสามารถฝังได้อย่างถูกกฎหมาย ส่วนใหญ่ไม่ได้และมีนักกฎหมายที่เชี่ยวชาญในเรื่องนี้ดังนั้นจึงควรระมัดระวัง


1
ฉันแน่ใจว่ามันใช้งานได้ดี แต่ฉัน (จริง ๆ แล้ว) ไม่ต้องการเขียนเครื่องมือเค้าโครงของฉันเองเพื่อจัดการทุกสิ่งที่ UILabel และ UITextView กำลังทำเพื่อฉัน - โดยเฉพาะอย่างยิ่งการตัดคำการวางตำแหน่งและการแก้ไข
Airsource Ltd

1
AFAICS วิธีนี้ใช้ได้กับอักขระตัวพิมพ์ใหญ่เท่านั้นดังนั้นการโทร 'uppercaseString'
35432 Martin Cote

2
ฉันกำลังลงเนื่องจากเคล็ดลับ "หมายเลขมายากล" เป็นแฮ็คที่บริสุทธิ์ซึ่งไม่ได้ผลจริงๆ ทางออกที่แท้จริงคือการได้รับตาราง cmap จากไฟล์ TTF
มาร์ติน Cote

1
นี่เป็นข้อมูลที่เรียบร้อยเกี่ยวกับการใช้แบบอักษรโดยตรงกับ Core Graphics เพียงเพื่ออัปเดตสำหรับผู้อ่านในอนาคต: ในระบบปฏิบัติการที่ใหม่กว่าใครสามารถทำได้และควรใช้ Core Text อีกวิธีหนึ่งสามารถใช้CGContextShowTextAtPoint()- แม้ว่าจะไม่ทำงานกับ UTF-8
Ivan Vučica

20

ใช่คุณสามารถรวมแบบอักษรที่กำหนดเองได้ อ้างถึงเอกสารเกี่ยวกับ UIFont โดยเฉพาะfontWithName:size:วิธีการ

1) ตรวจสอบให้แน่ใจว่าคุณใส่แบบอักษรในโฟลเดอร์ทรัพยากรของคุณ

2) "ชื่อ" ของตัวอักษรไม่จำเป็นต้องเป็นชื่อไฟล์

3) ตรวจสอบให้แน่ใจว่าคุณมีสิทธิ์ตามกฎหมายที่จะใช้แบบอักษรนั้น เมื่อรวมไว้ในแอปของคุณคุณจะต้องทำการกระจายและคุณต้องมีสิทธิ์ในการทำเช่นนั้น


คุณทำสำเร็จแล้วจริงหรือไม่? ฉันไม่สามารถทำงานได้และ googling ค้นหาเฉพาะบุคคลอื่นที่ได้ลองใช้และล้มเหลว
Airsource Ltd

ใช่. ฉันมี. ตรวจสอบให้แน่ใจว่าคุณใช้ชื่อแบบอักษรที่เหมาะสม
สิงหาคม

1
เมื่อคุณพูดว่า "ชื่อ" ของแบบอักษรนั้นไม่จำเป็นต้องเป็นชื่อไฟล์ "... จะค้นหาชื่อที่ถูกต้องได้อย่างไร
Keith Fitzgerald

7
ใช่คำตอบนี้ผิด คุณไม่สามารถทำสิ่งนี้ได้นอกกรอบ
Jonathan Sterling

อัปเดต iOS 9 เอกสาร UIFont ไม่พูดถึงอะไรเกี่ยวกับแบบอักษรที่กำหนดเอง
Cbas

20

หากคุณกำลังใช้xcode 4.3คุณต้องเพิ่มfontไปBuild Phaseภายใต้Copy Bundle Resourcesตามhttps://stackoverflow.com/users/1292829/arneในหัวข้อที่กำหนดเองแบบอักษร Xcode 4.3 สิ่งนี้ใช้ได้ผลสำหรับฉันนี่คือขั้นตอนที่ฉันใช้เพื่อให้แบบอักษรที่กำหนดเองทำงานในแอป

  1. เพิ่มแบบอักษรในโครงการของคุณ ผมลากและลดลงOTF(หรือTTF) ไฟล์ไปยังกลุ่มใหม่ที่ฉันสร้างขึ้นและทางเลือกที่ได้รับการยอมรับ Xcode copying the files over to the project folderของ
  2. สร้างUIAppFontsอาร์เรย์ด้วยแบบอักษรของคุณที่ระบุไว้เป็นรายการภายในอาร์เรย์ เพียงแค่namesไม่ใช่ส่วนขยาย (เช่น " GothamBold", " GothamBold-Italic")
  3. คลิกที่project nameวิธีที่ด้านบนของProject Navigatorด้านซ้ายของหน้าจอ
  4. คลิกที่Build Phasesแท็บที่ปรากฏในพื้นที่หลักของ xcode
  5. ขยายส่วน " Copy Bundle Resources" และคลิก"+"เพื่อเพิ่มแบบอักษร
  6. "+"เลือกไฟล์ตัวอักษรจากนำทางแฟ้มที่ปรากฏเปิดเมื่อคุณคลิกที่
  7. add to the projectทำเช่นนี้สำหรับตัวอักษรที่คุณต้องทุก

12

นี่คือคำแนะนำทีละขั้นตอนวิธีการทำ ไม่จำเป็นต้องใช้ไลบรารีเพิ่มเติมหรือการเข้ารหัสพิเศษใด ๆ

http://shang-liang.com/blog/custom-fonts-in-ios4/

ส่วนใหญ่ปัญหาเกิดจากตัวอักษรไม่ใช่วิธีการ วิธีที่ดีที่สุดที่จะทำคือใช้แบบอักษรที่ใช้งานได้จริงเช่น verdana หรือ geogia จากนั้นเปลี่ยนเป็นแบบอักษรที่ต้องการ หากไม่ได้ผลอาจเป็นชื่อตัวอักษรที่ไม่ถูกต้องหรือตัวอักษรนั้นไม่ใช่แบบอักษรที่มีการจัดรูปแบบที่ดี


12

มันง่ายมากที่จะเพิ่มแบบอักษรใหม่ในแอพ iOS ที่คุณมีอยู่

คุณเพียงแค่ต้องเพิ่มแบบอักษรเช่น font.ttf ลงในโฟลเดอร์ทรัพยากรของคุณ

info.plistเปิดใบสมัครของคุณ เพิ่มแถวใหม่เป็น "แบบอักษรที่จัดทำโดยแอปพลิเคชัน" และพิมพ์ชื่อแบบอักษรเป็น font.ttf

และเมื่อตั้งค่าฟอนต์ให้เป็นเช่นนั้น setFont:"corresponding Font Name"

NSArray *check = [UIFont familyNames];คุณสามารถตรวจสอบว่าตัวอักษรของคุณจะเพิ่มขึ้นหรือไม่โดย

มันส่งคืนฟอนต์ทั้งหมดที่แอปพลิเคชันของคุณสนับสนุน


11

ฉันอยากจะแนะนำหนึ่งในบทเรียนสั้น ๆ ที่ฉันชอบที่นี่: http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/ซึ่งข้อมูลนี้มา

ขั้นตอนที่ 1 - ลาก. ttf หรือ. otf จาก Finder ไปยังโครงการของคุณ

หมายเหตุ - ตรวจสอบให้แน่ใจว่าได้คลิกที่กล่องเพื่อ 'เพิ่มไปยังเป้าหมาย' ในเป้าหมายแอปพลิเคชันหลักของคุณ

ลากไฟล์แบบอักษรลงในโครงการของคุณและคลิกเพื่อเพิ่มลงในเป้าหมายของคุณ

หากคุณลืมคลิกเพื่อเพิ่มลงในเป้าหมายของคุณจากนั้นคลิกที่ไฟล์ฟอนต์ในลำดับชั้นโครงการของคุณและบนแผงด้านขวาคลิกเป้าหมายหลักของแอพในส่วนสมาชิกเป้าหมาย

วิธีเพิ่มแบบอักษรในแอปเป้าหมายหากคุณลืม

เพื่อให้แน่ใจว่าแบบอักษรของคุณเป็นส่วนหนึ่งของเป้าหมายแอปของคุณตรวจสอบให้แน่ใจว่าแบบอักษรเหล่านั้นแสดงในCopy Bundle ResourcesของคุณในBuild Phases

วิธีตรวจสอบทรัพยากรเพื่อดูว่าแบบอักษรเป็นส่วนหนึ่งของเป้าหมายแอพหรือไม่

ขั้นตอนที่ 2 - เพิ่มชื่อไฟล์ตัวอักษรลงใน Plist ของคุณ

ไปที่คุณสมบัติเป้าหมาย iOS แบบกำหนดเองในส่วนข้อมูลของคุณและเพิ่มคีย์ให้กับรายการในส่วนที่เรียกว่าFonts provided by application(คุณควรเห็นว่ามันเป็นตัวเลือกในขณะที่คุณพิมพ์มันและมันจะตั้งค่าตัวเองเป็นอาร์เรย์คลิกลูกศรเล็ก ๆ เพื่อเปิดรายการอาเรย์และพิมพ์ชื่อของไฟล์. ttf หรือ. otf ที่คุณเพิ่มเพื่อให้แอปของคุณรู้ว่าสิ่งเหล่านี้เป็นไฟล์ฟอนต์ที่คุณต้องการ

หมายเหตุ - หากแอปของคุณล่มหลังจากขั้นตอนนี้ให้ตรวจสอบตัวสะกดในรายการที่คุณเพิ่มที่นี่

Plist ตัวอย่างพร้อมกับเพิ่มแบบอักษรที่กำหนดเอง

ขั้นตอนที่ 3 - ค้นหาชื่อของแบบอักษรของคุณเพื่อให้คุณสามารถเรียกพวกเขา

บ่อยครั้งที่ชื่อแบบอักษรที่แอปพลิเคชันของคุณเห็นนั้นแตกต่างจากสิ่งที่คุณคิดว่ามันเป็นไปตามชื่อไฟล์ของแบบอักษรนั้นใส่รหัสของคุณและดูบันทึกการใช้งานของคุณที่ทำให้ชื่อตัวอักษรโทรในรหัสของคุณ

รวดเร็ว

for family: String in UIFont.familyNames(){
  print("\(family)")
  for names: String in UIFont.fontNamesForFamilyName(family){
      print("== \(names)")
  }
}

วัตถุประสงค์ C

for (NSString* family in [UIFont familyNames]){
    NSLog(@"%@", family);
    for (NSString* name in [UIFont fontNamesForFamilyName: family]){
        NSLog(@"  %@", name);
    }
}

บันทึกของคุณควรมีลักษณะดังนี้:

ตัวอย่างการค้นหาบันทึกเพื่อค้นหาชื่อตัวอักษร

ขั้นตอนที่ 4 - ใช้แบบอักษรที่กำหนดเองใหม่ของคุณโดยใช้ชื่อจากขั้นตอนที่ 3

รวดเร็ว

 label.font = UIFont(name: "SourceSansPro-Regular", size: 18)

วัตถุประสงค์ C

 label.font = [UIFont fontWithName:@"SourceSansPro-Regular" size:18];

10

ค้นหา TTF ในตัวค้นหาและ "รับข้อมูล" ภายใต้หัวข้อ "ชื่อเต็ม:" มันให้ชื่อฉันซึ่งฉันใช้กับfontWithName(ฉันเพิ่งคัดลอกและวางชื่อที่แน่นอนในกรณีนี้ไม่จำเป็นต้องใช้ส่วนขยาย '.ttf')


8

ยังไม่ออกมา แต่รุ่นต่อไปของ cocos2d (เฟรมเวิร์กเกม 2d) จะรองรับฟอนต์บิตแมปความยาวผันแปรเป็นแผนที่อักขระ

http://code.google.com/p/cocos2d-iphone/issues/detail?id=317

ผู้เขียนไม่มีวันวางจำหน่ายที่ถูกตอกตะปูสำหรับรุ่นนี้ แต่ฉันเห็นการโพสต์ที่ระบุว่าจะเป็นในอีกหนึ่งหรือสองเดือนถัดไป


8

ประกาศสำคัญ: คุณควรใช้ "ชื่อ PostScript" ที่เชื่อมโยงกับแบบอักษรไม่ใช่ชื่อเต็มหรือชื่อครอบครัว ชื่อนี้มักจะแตกต่างจากชื่อปกติของตัวอักษร


7

ทำตามขั้นตอนนี้

1) คัดลอกแบบอักษรของคุณในโครงการของคุณ

2) เปิด.plistไฟล์ของคุณในโหมดซอร์สโค้ด ... (หมายเหตุ - อย่าเปิดinfo.plist)

3) ก่อนหน้านั้น - คลิกขวาที่ตัวอักษรของคุณและเปิดใน fontforge หรือตัวแก้ไขที่คล้ายกันและ installในระบบของคุณมันควรจะเป็นinstall

4) พิมพ์สิ่งนี้

 <key>UIAppFonts</key>
<array>
    <string>MyriadPro.otf</string>
</array>

5) พิมพ์รหัสนี้ใน class .m

 [lblPoints setFont:[UIFont fontWithName:@"Myriad Pro" size:15.0]];

ที่นี่ lblPoints จะเปลี่ยนเป็นของคุณ UILabel

เสร็จสิ้น !! ถ้าตัวอักษรของคุณยังใช้งานไม่ได้ให้ตรวจสอบความเข้ากันได้แบบอักษรของคุณก่อน


1
ทำไมไม่เปิดinfo.plist?
Raptor

เหตุใดช่องว่างระหว่าง Myraid & Pro ในจุดที่ 5 เมื่อไม่มี Plist ในจุดที่ 4
jayant rawat

@jayantrawat ชื่อตัวอักษรที่ปรากฏในระบบหลังจากที่เราติดตั้งแบบอักษรและ. plist เป็นชื่อของไฟล์ตัวอักษร [.ttl หรือ otf]
Kirtikumar A.

@KirtikumarA ใช่ได้รับ .. ใช้งานได้สำเร็จในแอป ..
jayant rawat

@jayantrawat หากวิธีการแก้ปัญหาของฉันช่วยขอให้คุณยกเลิกคำตอบเพื่อให้ผู้ใช้รายอื่นสามารถช่วยได้เช่นเดียวกัน
Kirtikumar A.

6

บางทีผู้เขียนอาจลืมตั้งชื่อแบบอักษรMac FOND ?

  1. เปิดแบบอักษรในFontForgeจากนั้นไปที่องค์ประกอบ> ข้อมูลตัวอักษร
  2. มีตัวเลือก "Mac" ที่คุณสามารถตั้งชื่อ FOND ได้
  3. ภายใต้ไฟล์> ส่งออกแบบอักษรคุณสามารถสร้าง ttf ใหม่ได้

คุณสามารถลองตัวเลือก "Apple" ในกล่องโต้ตอบการส่งออกได้

การปฏิเสธความรับผิด : ฉันไม่ได้เป็นนักพัฒนา IPhone!


6

ฉันได้ลองทำตามคำแนะนำต่าง ๆ ในหน้านี้บน iOS 3.1.2 แล้วและนี่คือข้อสรุปของฉัน:

เพียงใช้[UIFont fontWithName:size:]กับแบบอักษรในไดเรกทอรีทรัพยากรจะไม่ทำงานแม้ว่าชื่อ FOND จะถูกตั้งค่าโดยใช้ FontForge

[UIFont fontWithName:size:]จะทำงานหากโหลดแบบอักษรก่อนโดยใช้ GSFontAddFromFile แต่GSFontAddFromFileไม่ใช่ส่วนหนึ่งของ iOS 3.1.2 ดังนั้นจึงต้องโหลดแบบไดนามิกตามที่อธิบายโดย @rpetrich


5

เงยหน้าขึ้นมอง ATSApplicationFontsPath

รายการ plist แบบง่ายที่ช่วยให้คุณรวมไฟล์ฟอนต์ในโฟลเดอร์ทรัพยากรแอพของคุณและพวกเขา "เพิ่งทำงาน" ในแอปของคุณ


คุณลองทำสิ่งนี้บนอุปกรณ์หรือไม่? ฉันไม่มีความสุขและ googling แนะนำว่ารายการ plist นี้ไม่ได้รับการสนับสนุนบน iPhone แม้ว่าจะเป็นเอกสารสำหรับ iPhone OS
Airsource Ltd

1
ขออภัยฉันใช้เฉพาะในแอป OS X เท่านั้นในขณะนี้
Matt Sephton

5

ฉันได้รวมคำแนะนำบางอย่างในหน้านี้เป็นสิ่งที่เหมาะกับฉันใน iOS 5

ก่อนอื่นคุณต้องเพิ่มแบบอักษรที่กำหนดเองในโครงการของคุณ จากนั้นคุณต้องทำตามคำแนะนำของ @iPhoneDev และเพิ่มแบบอักษรลงในไฟล์ info.plist ของคุณ

หลังจากคุณทำเช่นนี้แล้วงานนี้:

UIFont *yourCustomFont = [UIFont fontWithName:@"YOUR-CUSTOM-FONT-POSTSCRIPT-NAME" size:14.0];
[yourUILabel setFont:yourCustomFont];

อย่างไรก็ตามคุณต้องรู้ชื่อ Postscript ของตัวอักษรของคุณ เพียงทำตามคำแนะนำของ @Daniel Wood และกด command-i ขณะที่คุณอยู่ใน FontBook

จากนั้นเพลิดเพลินกับแบบอักษรที่กำหนดเองของคุณ


5

ขั้นแรกให้เพิ่มแบบอักษรในรูปแบบ. odt ให้กับทรัพยากรของคุณในกรณีนี้เราจะใช้ DINEngschriftStd.otf จากนั้นใช้รหัสนี้เพื่อกำหนดแบบอักษรให้กับป้ายกำกับ

[theUILabel setFont:[UIFont fontWithName:@"DINEngschriftStd" size:21]];

เพื่อให้แน่ใจว่าตัวอักษรของคุณถูกโหลดในโครงการเพียงแค่โทร

NSLog(@"Available Font Families: %@", [UIFont familyNames]);

ใน .plist คุณต้องประกาศแบบอักษร เพียงเพิ่มระเบียน 'แบบอักษรที่จัดทำโดยแอปพลิเคชัน' และเพิ่มรายการ 0 สตริงด้วยชื่อของแบบอักษร (DINEngschriftStd.otf)


5

สำหรับ iOS 3.2 และสูงกว่า: ใช้วิธีการต่าง ๆ ที่กล่าวมาข้างต้นคือ:

  1. เพิ่มไฟล์ฟอนต์ของคุณ (ตัวอย่างเช่นChalkduster.ttf ) ไปยังโฟลเดอร์ Resources ของโครงการใน XCode
  2. เปิด info.plist และเพิ่มคีย์ใหม่ชื่อ UIAppFonts ประเภทของคีย์นี้ควรเป็นอาร์เรย์
  3. เพิ่มชื่อแบบอักษรที่กำหนดเองของคุณไปยังอาร์เรย์นี้รวมถึงส่วนขยาย (" Chalkduster.ttf ")
  4. ใช้[UIFont fontWithName:@"Real Font Name" size:16]ในแอปพลิเคชันของคุณ

แต่ "ชื่อตัวอักษรที่แท้จริง" ไม่ใช่ชื่อที่คุณเห็นใน Fontbook เสมอไป วิธีที่ดีที่สุดคือถามอุปกรณ์ของคุณว่าเห็นแบบอักษรและชื่อที่แน่นอน

ฉันใช้ uifont-name-grabber โพสต์ที่: uifont-name-grabber

เพียงแค่วางแบบอักษรที่คุณต้องการในโครงการ xcode เพิ่มชื่อไฟล์ลงในเพลทของมันแล้วรันบนอุปกรณ์ที่คุณกำลังสร้างมันจะส่งอีเมลรายการแบบอักษรทั้งหมดให้คุณโดยใช้ชื่อที่UIFont fontWithName:ต้องการ


5

ทางออกที่ดีกว่าคือการเพิ่มคุณสมบัติใหม่ " Fonts provided by application" ลงในinfo.plistไฟล์ของคุณ

UIFontจากนั้นคุณสามารถใช้ตัวอักษรที่กำหนดเองของคุณเหมือนปกติ


3

มีวิธีใหม่ในการใช้แบบอักษรที่กำหนดเองเริ่มต้นด้วย iOS 4.1 มันช่วยให้คุณโหลดแบบอักษรแบบไดนามิกไม่ว่าจะเป็นจากไฟล์ที่รวมอยู่ในแอพข้อมูลที่ดาวน์โหลดหรือสิ่งที่มีให้คุณ นอกจากนี้ยังช่วยให้คุณโหลดแบบอักษรตามที่คุณต้องการในขณะที่วิธีเก่าโหลดแบบอักษรทั้งหมดเมื่อเริ่มต้นแอพซึ่งอาจใช้เวลานานเกินไปหากคุณมีแบบอักษรจำนวนมาก

วิธีการใหม่มีการอธิบายที่ios-dynamic-font-loading

คุณใช้CTFontManagerRegisterGraphicsFontฟังก์ชั่นโดยให้บัฟเฟอร์กับข้อมูลฟอนต์ของคุณ จากนั้นจะมีให้UIFontและมุมมองเว็บเช่นเดียวกับวิธีการเดิม นี่คือตัวอย่างรหัสจากลิงก์นั้น:

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);

ฉันใช้รหัสนี้ แต่ได้รับ & ข้อผิดพลาดไม่สามารถโหลดแบบอักษร: การดำเนินการไม่เสร็จสมบูรณ์ (com.apple.coretext ข้อผิดพลาด 105 - ไม่สามารถลงทะเบียน CGFont '<CGFont (0x14fe7df0): Shruti>')
Hiren

ข้อผิดพลาด 105 คือkCTFontManagerErrorAlreadyRegistered"ไฟล์ได้รับการลงทะเบียนแล้วในขอบเขตที่ระบุ" developer.apple.com/library/ios/#documentation/Carbon/Reference/…
David M.

3

Swift, code way: (ใช้ได้กับ swift 2.0)

เพิ่มแบบอักษรที่ต้องการให้กับโครงการของคุณ (เช่นการเพิ่มภาพเพียงแค่ลากไป Xcode) ตรวจสอบให้แน่ใจว่าพวกเขาถูกกำหนดเป้าหมายให้กับโครงการของคุณ
เพิ่มวิธีนี้และโหลดแบบอักษรที่กำหนดเอง (แนะนำใน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: "")
    }

}

ใช้ตัวอย่าง:

if let fontPath = NSBundle.mainBundle().pathForResource("My-Font", ofType: "ttf"){
      loadFont(fontPath)
}

ใช้แบบอักษร:

UIFont(name: "My-Font", size: 16.5)

เพียงแค่สงสัยว่าทำไมคุณถึงไม่เพิ่มแบบอักษรใน Info.plist ของคุณดูเหมือนว่าจะทำงานได้มากขึ้นในสิ่งเดียวกัน
สตีเฟ่นเจสซี่

2

คุณสามารถเพิ่มไฟล์ "FONT" ที่ต้องการภายในโฟลเดอร์ทรัพยากร จากนั้นไปที่Info.plistไฟล์โครงการและใช้คีย์ "แบบอักษรที่จัดทำโดยแอปพลิเคชัน" และค่าเป็น "FONT NAME"

จากนั้นคุณสามารถเรียกวิธีการ [UIFont fontwithName:@"FONT NAME" size:12];


1

ฉันทำให้ทุกอย่างเป็นไปได้ แต่แบบอักษรใหม่ไม่ปรากฏดังนั้นฉันจึงพบวิธีแก้ปัญหา:

เมื่อคุณลากไฟล์ fot (otf หรือ ttf) อย่าลืมตรวจสอบช่องทำเครื่องหมายภายใต้ "เพิ่มไปยังเป้าหมาย"

หลังจากนั้นแบบอักษรของคุณจะปรากฏขึ้นและทุกอย่างจะทำงานได้ดี


1

แม้ว่าคำตอบข้างต้นบางส่วนนั้นถูกต้อง แต่ฉันได้เขียนแบบฝึกหัดที่มีภาพอย่างละเอียดสำหรับผู้ที่ยังมีปัญหาเกี่ยวกับแบบอักษร

การแก้ปัญหาด้านบนที่บอกให้คุณเพิ่มแบบอักษรเพื่อ plist และใช้

[self.labelOutlet setFont:[UIFont fontWithName:@"Sathu" size:10]];

เป็นสิ่งที่ถูกต้อง กรุณาใช้วิธีแฮ็คอื่น ๆ หากคุณยังคงประสบปัญหาในการค้นหาชื่อแบบอักษรและเพิ่มพวกเขานี่คือการสอน -

การใช้แบบอักษรที่กำหนดเองในแอปพลิเคชัน iOS


ฉันแค่ลองสิ่งนี้ ดูเหมือนว่าจะทำงาน แต่ตัวอักษรของฉันมีขนาดเล็กไม่ว่าฉันจะตั้งค่าขนาดใด สำหรับสิ่งที่คุ้มค่าฉันกำลังใช้ไฟล์ OTF ที่ใช้ได้อย่างอิสระ: philsfonts.com/index.php/free_fonts
ari gold

ลองใช้ด้วยแบบอักษรที่กำหนดเองอื่น ๆ และหากปัญหายังคงมีอยู่แจ้งให้เราทราบ หากใช้งานได้แสดงว่ามีปัญหากับแบบอักษรของคุณ
Bharat Gulati

1

ใช่คุณสามารถใช้แบบอักษรที่กำหนดเองในใบสมัครของคุณ

ทีละขั้นตอนดังต่อไปนี้:

เพิ่มไฟล์แบบอักษรที่กำหนดเองลงในโครงการของคุณในไฟล์ที่รองรับ

เพิ่มรหัสลงในไฟล์ Info.plist ของคุณชื่อ UIAppFonts

กำหนดให้คีย์นี้เป็นอาร์เรย์

สำหรับแต่ละฟอนต์ที่คุณมีให้ป้อนชื่อเต็มของไฟล์ฟอนต์ (รวมถึงส่วนขยาย) เป็นไอเท็มไปยังอาร์เรย์ UIAppFonts

บันทึก Info.plist ตอนนี้ในแอปพลิเคชันของคุณคุณสามารถโทรหา [UIFont fontWithName: @ "ชื่อแบบอักษรที่กำหนดเองของคุณ" ขนาด: 20] เพื่อรับแบบอักษรที่กำหนดเองเพื่อใช้กับ UILabels ของคุณหลังจากที่ใช้แบบอักษรนี้ บนฟอนต์ที่กำหนดเองและดูชื่อฟอนต์ด้านบนสุดอย่างระมัดระวังกำลังรับและคัดลอกฟอนต์นี้วางที่นี่ [UIFont fontWithName: @ "ที่นี่ผ่านชื่อฟอนต์ที่กำหนดเอง" ขนาด: 20]

ฉันหวังว่าคุณจะได้รับคำตอบที่ถูกต้อง


1

ใช่คุณสามารถใช้แบบอักษรที่กำหนดเองในใบสมัครของคุณ

ทีละขั้นตอนดังต่อไปนี้:

  • เพิ่มไฟล์แบบอักษรที่กำหนดเองลงในโครงการของคุณในไฟล์ที่รองรับ
  • เพิ่มรหัสของคุณ Info.plistไฟล์ชื่อ UIAppFonts
  • กำหนดให้คีย์นี้เป็นอาร์เรย์
  • สำหรับแต่ละฟอนต์ที่คุณมีให้ป้อนชื่อเต็มของไฟล์ฟอนต์ (รวมถึงส่วนขยาย) เป็นไอเท็มไปยังอาร์เรย์ UIAppFonts
  • บันทึกInfo.plist ตอนนี้ในแอปพลิเคชันของคุณคุณสามารถโทรหา[UIFont fontWithName:@"your Custom font Name" size:20]แบบอักษรที่กำหนดเองเพื่อใช้กับคุณUILabels

หลังจากใช้สิ่งนี้หากไม่ได้รับแบบอักษรที่ถูกต้องจากนั้นให้คุณคลิกสองครั้งที่แบบอักษรที่กำหนดเองและดูชื่อแบบอักษรด้านบนอย่างระมัดระวังและคัดลอกแบบอักษรวางที่นี่[UIFont fontWithName:@" here past your Custom font Name" size:20] ฉันหวังว่าคุณจะได้คำตอบที่ถูกต้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.