Xcode 5 にカスタム フォントを追加する方法と、プロジェクト内のすべてのラベルをそのフォントに変更する方法を教えてください。これはプログラムでしかできないと聞いたので?
6 に答える
カスタム フォントを使用して、すべてのラベルをプログラムで設定する必要があります。
カスタム フォントを使用するには:
1/ リソースなどのカスタム フォントをプロジェクトに追加します (フォント .ttf または .otf)
2/ info.plist にキー UIAppFonts (アプリケーションによって提供されるフォント) と各カスタム フォントの名前 (例: SohoGothicStd.ttf) を追加します。
3/ フォントを使用するためのマクロを作成できます
#define FONT_SOHO_STD(s) [UIFont fontWithName:@"SohoGothicStd" size:s]
4/ このマクロをラベル パーの例に使用します。
_myLabel.font = FONT_SOHO_STD(15.0f);
はい、コードを介して行う必要があります。XCode5 がそのような新しい機能を追加したとは思わない。プログラムでそれを行うには、次のようにします。
UILabel のサブクラスであるクラスを作成し、Helverica-Bold でフォント サイズが 14 の Title のようなものがあるとします。
IN .h ファイル
#import <UIKit/UIKit.h>
@interface MyLabel : UILabel {
}
@end
.m ファイル内
#import "MyLabel.h"
@implementation MyLabel
- (id)initWithCoder:(NSCoder *)coder {
self = [super initWithCoder:coder];
if (self) {
self.font = [UIFont fontWithName:@"Helvetica-Bold" size:14];
}
return self;
}
@end
別のサブクラスを使用しない別の例
-(UILabel *) myTitleLabel {
UILabel *label = [[UILabel alloc] init];
label.backgroundColor=[UIColor clearColor];
[label setFont:[UIFont fontWithName:@"Helvetica-Bold" size:14]];
label.textColor=[UIColor colorWithRed:(79.0 / 255.0) green:(79.0 / 255.0) blue:(79.0 / 255.0) alpha: 1];
[label setTextAlignment:NSTextAlignmentLeft];
[label sizeToFit];
return label;
}
次に、myTitleLabel クラスを使用してオブジェクトを作成し、すべての titleLabel オブジェクトが同じ色とフォント サイズになるようにします。
はるかに優れたオプションは、新しいフォントをシステム/OS フォント ディレクトリに追加し、そこからストーリーボードに追加するか、NSAttributed 文字列で使用することです。
手順:
- フォントの .ttf ファイルをダウンロードする
- ストーリーボードの任意のラベル/テキストビューに移動し、右上の属性インスペクタで「テキスト」を選択してから、>「属性」を選択します
- フォント名の横にある小さな T アイコンをクリックして、フォント エディターを開きます。
- 歯車/ホイール/設定アイコンに移動し、「フォントの管理」を選択します
- 右から 2 番目の「+」ボタンをクリックし、フォント .ttf ファイルに移動して、システム フォント コレクションに追加します。
- ストーリーボードまたはコードでフォント名を変更して、フォントを使用してください:)
それが役立つことを願っています!
ここでの回答は問題ありませんが、カスタム ラベルの設定をできるだけ少なくし、サイズをハードコーディングしないことをお勧めします。次のように簡単に実行できます。
#import "CustomFontLabel.h"
@implementation CustomFontLabel
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self setFontStyle];
}
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
[self setFontStyle];
}
return self;
}
- (void)setFontStyle {
CGFloat fontSize = self.font.pointSize;
[self setFont:[UIFont fontWithName:@"LindenHill" size:fontSize]];
}
@end
これにより、ストーリーボードで設定した他のすべての設定が尊重され、すべてを簡単に管理できるようになります。