আইওএস 7 এ কাস্টম ফন্টগুলি


102

আমি একটি গেম বিকাশ করছি এবং আমি আমার অ্যাপ্লিকেশনটিতে একটি কাস্টম ফন্ট ব্যবহার করতে চাই। আমি এটির জন্য স্প্রিটকিট ব্যবহার করছি, যদি এটি গুরুত্বপূর্ণ হয়। আমি ব্যবহার চেষ্টা করেছি এই https://github.com/deni2s/IBCustomFonts কিন্তু আমি এই সঙ্গে কাজ এটা পেতে পারি ফন্ট http://www.fontspace.com/freaky-fonts/emulogic

আমি বিভিন্ন জিনিস চেষ্টা করে দেখেছি এবং আমি অ্যাপটির তথ্য.পাল্টিতে ফন্টটি নিবন্ধভুক্ত করেছি ... কেউ কি জানেন কী চলছে?


আপনি কি নিশ্চিত যে আপনার কোডটিতে ফন্টটি ব্যবহার করার সময় আপনি সঠিক নামটি ব্যবহার করছেন?
নিক

1
এই ব্লগটি আপনার পক্ষে কোডউইথক্রিস.com
Xu Yin

উত্তর:


277

সবার আগে আমি ধরে নিচ্ছি যে স্প্রিটকিট কোনও পার্থক্য করে না।

  1. আপনার প্রজেক্টে .otf বা .ttf এ অনুলিপি করা উচিত need উদাহরণস্বরূপ ফাইলগুলিতে।
  2. আপনার .plist ফাইলটি সম্পাদনা করতে হবে। যোগ "অ্যাপ্লিকেশন দ্বারা উপলব্ধ ফন্ট" আপনার plist মধ্যে এবং গুরুত্বপূর্ণ আইটেম 0 আপনি এক্সটেনশানটি সঙ্গে আপনার সাপোর্টিং ফাইল কপি ফন্ট সঠিক ফাইলের নাম কপি করুন। উদাহরণস্বরূপ: "জোসেফিনসান্সস্টেট-লাইট_0.otf"
  3. আপনার অ্যাপটিতে আমদানি করা ফন্টটি নিজেই অ্যাপে প্যাক হয়ে গেছে তা নিশ্চিত করুন। আপনার লক্ষ্য নির্বাচন করে তা করুন , তারপরে পর্যায়গুলি তৈরি করুন , তারপরে বান্ডিল সংস্থানগুলি অনুলিপি করুন । যদি আপনি সেখানে আপনার ফন্টটি দেখতে না পান তবে সমর্থনকারী ফাইল থেকে এটিকে টেনে আনুন ।

অবশেষে, অ্যাপ্লিকেশনটি কেবল আপনার ফন্টের জন্য ব্যবহারযোগ্য নাম দেখতে শুরু করলে আপনি আপনার সমস্ত ফন্টের তালিকা করতে চান। আপনি কোডটির এই সামান্য অংশটি দিয়ে তা করবেন:

NSArray *fontFamilies = [UIFont familyNames];
for (int i = 0; i < [fontFamilies count]; i++)
{
    NSString *fontFamily = [fontFamilies objectAtIndex:i];
    NSArray *fontNames = [UIFont fontNamesForFamilyName:[fontFamilies objectAtIndex:i]];
    NSLog (@"%@: %@", fontFamily, fontNames);
}

মুদ্রিত ফলাফলগুলিতে আপনার ফন্টের সন্ধান করুন, উদাহরণস্বরূপ, আমি "জোসেফিন" অনুসন্ধান করব এবং আমি দেখতে পাব যে প্রকৃত ফন্টের নাম "জোসেফিনসান্সস্টেট-লাইট"। এর পরে আপনার কেবল সেই ফন্টটি ব্যবহার করতে হবে:

UIFont *customFont = [UIFont fontWithName:@"JosefinSansStd-Light" size:20];

আইওএস 8-এ আপনি আপনার ফন্টগুলি সরাসরি প্রকল্পে যুক্ত করেন এবং সেগুলি ইন্টারফেস বিল্ডারে দৃশ্যমান হয়। এর জন্য অ্যাকাউন্টে আপনার কোডটি সংশোধন করুন তবে প্রোগ্রামটিমে iOS7 এর জন্য ফন্ট সেট করা এবং এটিকে xCode6 ইন্টারফেস বিল্ডারে নির্বাচন করুন। পুনশ্চ. XCode6 এ ইন্টারফেস বিল্ডার আপনাকে সঠিক ফন্টের নাম দেয় যা আপনি নীচের কোডটিতে অনুলিপি করতে পারেন।

#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)

 if(SYSTEM_VERSION_LESS_THAN(@"8.0"))
    {
        UIFont *customFont = [UIFont fontWithName:@"OpenSans-Light" size:32];
        self.registerLabel.font = customFont;  
    }

আশা করি এটি সাহায্য করবে, চিয়ার্স


ধন্যবাদ! আমি বুঝতে পেরেছি! সমস্যাটি আমি এটি সমর্থনকারী ফাইলগুলিতে যোগ করতে চাই না, সুতরাং এটি লোড হচ্ছে না: পি
জোসে মারিয়া

1
আমি plist কী ব্যবহার করতে হয়েছেUIAppFonts
মাইক ফ্লিন

1
আমি আমার অ্যাপ্লিকেশনটি পুরো আইওএস 7 / এক্সকোড 5.1.1 থেকে একটি আইওএস 8 / এক্সকোড 6.0 প্রকল্পে পুনরায় তৈরি করেছি। আমি 2. পদক্ষেপটি না করা পর্যন্ত কাস্টম ফন্টটি প্রদর্শিত হচ্ছে না। গ্রু 8 ব্যাখ্যা!
এমবি_আইওএস ডেভেলপার

1
let fontFamilies = UIFont.familyNames() for familyName in fontFamilies { let fontNames = UIFont.fontNamesForFamilyName(familyName as String) println("\(familyName): \(fontNames)") }
সুইফটে

1
সমস্ত ফন্টের নাম মুদ্রণের জন্য কিছু সুইফট কোড:for name in UIFont.familyNames() { debugPrint(UIFont.fontNamesForFamilyName(name)) }
21 এ গিমনেট

24

কাস্টম ফন্ট ব্যবহার করতে কোনও সমস্যা নেই, আমি এটি করেছি। এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার তথ্য ফন্টে ফন্ট নিবন্ধন করুন। "অ্যাপ্লিকেশন দ্বারা সরবরাহ করা ফন্ট" এন্ট্রি যুক্ত করে হরফ ফাইলের নাম রাখুন, ফন্টের নাম নয়। ফন্ট.টিটিএফ (আমার মনে হয় আপনি ইতিমধ্যে এটি করেছেন)
  2. প্রোজেক্ট নেভিগেটরে আপনার প্রকল্পে যান, প্রকল্পের নামটি ক্লিক করুন এবং "বিল্ড পর্যায়গুলি" এ যান তারপরে নীচে যান "কপি বান্ডিল রিসোর্সগুলি" এর নীচে যান, অনেকগুলি ফাইল রয়েছে এবং "+" চিহ্নটির জন্য অনুসন্ধান করুন। আপনার প্রকল্প ফাইলগুলির সাথে একটি পপআপ উইন্ডো খুলবে। আপনার ফন্ট ফাইলটি অনুসন্ধান করুন এবং এটি বান্ডেলে যুক্ত করুন।
  3. অবশেষে হরফের নাম চেক করুন। আপনি যখন এটি আপনার কোডটিতে ব্যবহার করেন, আপনাকে ফন্টের নাম ব্যবহার করতে হবে, ফাইলের নাম নয়। ফন্টের নাম জানতে, ফাইন্ডারে ফন্ট ফাইলে ডাবল ক্লিক করুন এবং একটি উইন্ডো ফন্টটি দেখানো হবে। উইন্ডোটির শিরোনামটি পরীক্ষা করুন, এটি আপনাকে ব্যবহার করতে হবে এমন ফন্টের নাম।

এবং পরামর্শ, আপনার ..প্রিফিক্স.পিচ ফাইলে সেই নামটি ম্যাক্রো হিসাবে যুক্ত করুন। আপনার প্রকল্পে এটি ব্যবহার করা আরও সহজ হবে যদি আপনি একাধিকবার ফন্ট ব্যবহার করতে পারেন।

আমার মনে হয় আপনার যে সমস্যাটি ছিল তা হ'ল আপনি ফন্টটি সঠিকভাবে নিবন্ধভুক্ত করেছেন তবে এটি অ্যাপ বান্ডেলে অনুলিপি করা হয়নি। সুতরাং অ্যাপ্লিকেশনটি কার্যকর করার সময় এটি ফন্টটি খুঁজে পেল না। এজন্য দ্বিতীয় পদক্ষেপটি গুরুত্বপূর্ণ। আমি প্রথম সময়টি বুঝতে চেষ্টা করে অনেক সময় ব্যয় করেছি :)


2
আমার জন্য কী হ'ল ফন্টের শিরোনাম। ধন্যবাদ!
অস্কার

20

দ্রুত এ অর্জন

আপনি যখন অ্যাপ্লিকেশনটি শুরু করেন কেবল তখনই আপনার ফন্টের জন্য ব্যবহারযোগ্য নাম দেখতে আপনার সমস্ত ফন্টের তালিকা তৈরি করতে চান। কোডের এই সামান্য অংশটি দিয়ে আপনি এটি করতে পারেন:

    UIFont.familyNames.forEach {
        print("fontFamily: \($0), fonts: \(UIFont.fontNames(forFamilyName: $0))")
    }

বা সাথেUIFont.familyNames.forEach { print("fontFamily: \($0), fonts: \(UIFont.fontNames(forFamilyName: $0))") }
ড্যানিয়েল

5

আমি একাধিকবার চেষ্টা করেও এই উত্তরগুলি কাজের পক্ষে পেতে সক্ষম হইনি। গ্রহণযোগ্য উত্তরে নির্দেশনা অনুসরণ করতে আমি এর মধ্যে কাস্টম ফন্টটি পেয়েছি কেবলমাত্র ফন্টটি ব্যবহার করে স্টোরি বোর্ডে একটি গোপন লেবেল তৈরি করুন। আমি হরফটি প্রোগ্রমেটিকভাবে ব্যবহার করতে পারি। অদ্ভুত এবং হ্যাকি আমি জানি তবে এটি আমার পক্ষে কাজ করেছিল।


1
আপনি ঠিক ঠিক বলেছেন। আমি প্রকল্পটি লক্ষ্য করে তোলার জন্য প্লিস্ট, চেকমার্ক সহ অনেক টিউটোরিয়ালের সমস্ত কিছুই দেখেছি এবং পর্যায়ক্রমে সঠিক ফন্টের পরিবারের নাম খুঁজে পেয়েছি, তবে এটি এখনও কাজ করে না। তারপরে আমি যেমন বলি তেমনি আমি একটি লুকানো লেবেল যুক্ত করেছি এবং শেষ পর্যন্ত এটি প্রদর্শিত হয়েছিল। আমি এক্সকোড 7.2 ব্যবহার করছি এবং এটি অবশ্যই একটি বাগ থাকতে হবে।
DrZ214

3

আপনি যদি এক্সকোড 6 এ থাকেন তবে এটি যতটা সহজ। fontআপনার প্রকল্পে কেবল একটি ফোল্ডার যুক্ত করুন, ফোল্ডারে আপনার ফন্টগুলি যুক্ত করুন এবং আপনি যেতে ভাল।

এখানে চিত্র বর্ণনা লিখুন


7
নিশ্চিত হয়ে নিন যে আপনি এটিও আপনার লক্ষ্যযুক্ত টার্গেটে যুক্ত করেছেন। লুক্কায়িত হোবিট এক্সকোড।
ম্যাট পার্কিন্স

3

উপরের কোনও পদ্ধতি যদি আপনার পক্ষে কাজ করে না, এবং আপনি কেবল নিজের কাস্টম ফন্টটি কেবল "প্রগ্রেমেটিকালি" ব্যবহার করতেই পারেন (যেমন আপনি এটি কোনও এক্সবিতে ব্যবহার করেন নি) তবে আপনাকে কমপক্ষে একবার কোনও এক্সবিতে, যে কোনও জায়গায় এটি ব্যবহার করতে হবে ।

(পিএস স্টুয়ার্ট ক্লার্ক - ইতিমধ্যে এটির জবাব দিয়েছেন, সুতরাং দয়া করে আমার জন্য কোনও কৃতিত্ব নেই However তবে, আমি পুনর্বিবেচনা এবং এটি একটি পৃথক উত্তর হিসাবে পোস্ট করার সিদ্ধান্ত নিয়েছিলাম, কারণ আমি তার উত্তরটি মিস করেছি, আমি যখন এটি পড়েছিলাম তখন তা আমার কাছে পরিষ্কার ছিল না found সুযোগটি পেয়ে এই সমাধানটি যখন আমি এক্সবিতে কাস্টম ফন্টটি পরীক্ষা করছিলাম তখন আমি দেখেছিলাম যে এটি অন্য কোথাও কর্মসূচির ভিত্তিতে কাজ করেছে, কিন্তু যখন আমি ফন্টটি xib থেকে সরিয়ে ফেললাম, তখন এটি অগ্রগতিমূলকভাবে কাজ বন্ধ করে দিয়েছে।)


2

সুইফট 3-এর জন্য আপডেট হয়েছে।

let fontFamilies:[String] = UIFont.familyNames

for fontFamily: String in fontFamilies {
    let fontNames: [String] = UIFont.fontNames(forFamilyName: fontFamily)
    print("\(fontFamily)  \(fontNames)");
}

0

একটি দ্রুত সমাধান - হরফ ইতিমধ্যে কাজ করা হয়েছে যখন এটি আমার জন্য এটি হয়েছিল, তবে একটি নতুন উদাহরণ লেবেল পছন্দসই ফন্টটি দেখায় না:

পরিষ্কার, গভীর পরিষ্কার এবং খালি উত্পন্ন ডেটা ফোল্ডার।


0
please try below code.
@end
@implementation UILabel (CustomFont)
-(void)setFontName:(NSString *)value{
CGFloat newsize = (self.font.pointSize * [UIScreen mainScreen].bounds.size.width)/320;
[self setFont:[UIFont fontWithName:self.font.fontName size:newsize]];
}
@end
@implementation UITextField (CustomFont)
-(void)setFontName:(NSString *)value{
CGFloat newsize = (self.font.pointSize * [UIScreen mainScreen].bounds.size.width)/320;
[self setFont:[UIFont fontWithName:self.font.fontName size:newsize]];
}
@end
@implementation UIButton (CustomFont)
-(void)setFontName:(NSString *)value{
CGFloat newsize = (self.titleLabel.font.pointSize * [UIScreen mainScreen].bounds.size.width)/320;
[self.titleLabel setFont:[UIFont fontWithName:self.titleLabel.font.fontName size:newsize]];
}
@end
@end

@interface UILabel (CustomFont)
-(void)setFontName:(NSString *)value;
@end
@interface UITextField (CustomFont)
-(void)setFontName:(NSString *)value;
@end
@interface UIButton (CustomFont)
-(void)setFontName:(NSString *)value;
@end
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.