ゲームを開発していますが、アプリでカスタムフォントを使用したいと考えています。それが重要な場合は、SpriteKitを使用しています。これを使ってみました https://github.com/deni2s/IBCustomFonts私はそれをこのフォントで動作させることができませんhttp://www.fontspace.com/freaky-fonts/emulogic
いろいろ試して、フォントをアプリのinfo.plistに登録しました...誰が何が起こっているのか知っていますか?
ゲームを開発していますが、アプリでカスタムフォントを使用したいと考えています。それが重要な場合は、SpriteKitを使用しています。これを使ってみました https://github.com/deni2s/IBCustomFonts私はそれをこのフォントで動作させることができませんhttp://www.fontspace.com/freaky-fonts/emulogic
いろいろ試して、フォントをアプリのinfo.plistに登録しました...誰が何が起こっているのか知っていますか?
回答:
まず第一に、SpriteKitは何の違いもないと仮定しています。
最後に、アプリの起動時にすべてのフォントをリストして、フォントの使用可能な名前を確認したいとします。これは、次の小さなコードで行います。
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);
}
印刷結果でフォントを検索します。たとえば、「Josefin」を検索すると、実際のフォント名は「JosefinSansStd-Light」であることがわかります。その後、次の方法でそのフォントを使用する必要があります。
UIFont *customFont = [UIFont fontWithName:@"JosefinSansStd-Light" size:20];
iOS8では、フォントをプロジェクトに直接追加すると、それらはインターフェイスビルダーに表示されます。これを考慮してコードを変更しますが、プログラムでiOS7のフォントを設定し、xCode6インターフェイスビルダーで選択します。PS。xCode6のInterface Builderは、以下のコードにコピーアンドペーストできる正しいフォント名を提供します。
#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;
}
これがお役に立てば幸いです。
UIAppFonts
let fontFamilies = UIFont.familyNames() for familyName in fontFamilies { let fontNames = UIFont.fontNamesForFamilyName(familyName as String) println("\(familyName): \(fontNames)") }
for name in UIFont.familyNames() { debugPrint(UIFont.fontNamesForFamilyName(name)) }
カスタムフォントを使用しても問題ありません。次の手順を実行します:
アドバイスとして、その名前を..Prefix.pchファイルにマクロとして追加します。フォントを複数回使用する必要がある場合は、プロジェクトで使用する方が簡単です。
あなたが持っていたと思う問題は、フォントを適切に登録したが、それがApp Bundleにコピーされなかったことです。そのため、アプリを実行したときにフォントが見つかりませんでした。そのため、ステップ2が重要です。私は多くの時間を費やして初めてそれを理解しようとしました:)
これを迅速に達成するには
アプリの起動時にすべてのフォントを一覧表示して、フォントの使用可能な名前を確認したい場合。これは、次の小さなコードで行うことができます。
UIFont.familyNames.forEach {
print("fontFamily: \($0), fonts: \(UIFont.fontNames(forFamilyName: $0))")
}
UIFont.familyNames.forEach { print("fontFamily: \($0), fonts: \(UIFont.fontNames(forFamilyName: $0))") }
何度も試してみて、これらの答えを得ることができたことはありません。私がこれまでにカスタムフォントを取得して受け入れられた回答の指示に従う唯一の方法は、フォントを使用するストーリーボードに非表示のラベルを作成することです。プログラムでフォントを使用できます。奇妙でハックなことは知っていますが、うまくいきました。
Xcode 6を使用している場合は、簡単です。font
プロジェクトにフォルダーを追加し、そのフォルダーにフォントを追加すれば、準備は完了です。
上記のいずれの方法もうまくいかず、カスタムフォントを「プログラム的に」のみ使用している場合(つまり、どのxibでも使用していなかった場合)、1つのxibのどこかで、少なくとも一度は使用する必要があります。 。
(PSスチュアートクラーク-すでにこれに答えたので、私にはクレジットはありません。しかし、私は彼の答えを見逃したため、言い換えて別の答えとして投稿することにしました。それを読んだとき、私にはわかりませんでした。 xibでカスタムフォントをテストしているときに偶然にこの解決策を試してみたところ、プログラムで他の場所で機能することがわかりましたが、xibからフォントを削除すると、プログラムで機能しなくなりました。)
Swift 3用に更新されました。
let fontFamilies:[String] = UIFont.familyNames
for fontFamily: String in fontFamilies {
let fontNames: [String] = UIFont.fontNames(forFamilyName: fontFamily)
print("\(fontFamily) \(fontNames)");
}
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