ゲームを開発していますが、アプリでカスタムフォントを使用したいと思います。それが重要な場合は、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のインターフェイスビルダーは、以下のコードにコピーアンドペーストできる正しいフォント名を提供します。
#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;
}
これがお役に立てば幸いです。
カスタムフォントを使用しても問題ありません。次の手順を実行します:
そしてアドバイスとして、その名前を..Prefix.pchファイルにマクロとして追加します。フォントを複数回使用する必要がある場合は、プロジェクトで使用する方が簡単です。
あなたが持っていたと思う問題は、フォントを適切に登録したが、アプリのバンドルにコピーされなかったことです。そのため、アプリを実行したときに、フォントが見つかりませんでした。そのため、ステップ2が重要です。私は最初にそれを理解しようとして多くの時間を費やしました:)
Swiftでこれを実現するには
アプリの起動時にすべてのフォントを一覧表示する場合は、使用可能なフォント名を表示するだけです。次の小さなコードでそれを行うことができます。
UIFont.familyNames.forEach {
print("fontFamily: \($0), fonts: \(UIFont.fontNames(forFamilyName: $0))")
}
何度も試してみても、これらの答えを仕事で得ることができたことがありません。受け入れられた回答の指示に従うカスタムフォントを取得し、そのフォントを使用するストーリーボードに非表示のラベルを作成する唯一の方法です。フォントをプログラムで使用できます。奇妙でハックは知っていますが、うまくいきました。
上記の方法のいずれもうまくいかず、カスタムフォントを「プログラムで」のみ使用する場合(つまり、xibで使用しなかった場合)、1つのxibのどこかで、少なくとも一度は使用する必要があります。 。
(PSスチュアートクラーク-すでにこれに答えたので、私に信用はありません。しかし、私は彼の答えを逃したので、私はそれを読み直したときに明確ではありませんでした。 xibでカスタムフォントをテストしていたときに偶然この解決策を試したところ、プログラムで他の場所で機能することがわかりましたが、xibからフォントを削除すると、プログラムで機能しなくなりました。)
Xcode 6を使用している場合は、できるだけ簡単です。 font
フォルダーをプロジェクトに追加し、フォルダーにフォントを追加するだけで準備完了です。
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