iOS には少し慣れていませんが、すぐに習得できます。
アプリには多数のラベルと UIText フィールドがあります。実際の iPad でそれを見た後、一連のフィールドのテキストを、それが何であれ、Helv Neu の凝縮された太字のサイズ 24 に変更したいと決めました。 x のフィールド数にスタイルを設定するだけですが、そのようなものは見つかりません。
ヘルプ!
iOS には少し慣れていませんが、すぐに習得できます。
アプリには多数のラベルと UIText フィールドがあります。実際の iPad でそれを見た後、一連のフィールドのテキストを、それが何であれ、Helv Neu の凝縮された太字のサイズ 24 に変更したいと決めました。 x のフィールド数にスタイルを設定するだけですが、そのようなものは見つかりません。
ヘルプ!
1 つのオプションは、Vesper によって発明されたシステムであるDB5を使用して、フォント、色などを plist に保存することです。その後、それらを変更したい場合は、1 か所で永久に変更できます。アプリにサーバーから新しい Plist をダウンロードさせることもでき、アプリの外観をリモートで変更できます。
もう 1 つのオプションは、定数ファイルを使用して属性付き文字列辞書を定義することです。
+ (NSDictionary *) biggerLetterSpacingText
{
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
[dictionary setObject:[NSNumber numberWithFloat:1.3] forKey:NSKernAttributeName];
return dictionary;
}
+ (NSDictionary *) linkAttributes
{
static NSMutableDictionary *dictionary;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
dictionary = [NSMutableDictionary dictionary];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
[dictionary setObject:paragraphStyle forKey:(NSString *)kCTParagraphStyleAttributeName];
});
UIColor *tintColor = [[(MyAppDelegate *)[[UIApplication sharedApplication] delegate] window] tintColor];
UIColor *colorToUse;
if (CGColorEqualToColor(tintColor.CGColor, [UIColor blueColor].CGColor)) {
// links are enabled
colorToUse = [UIColor blueColor];
} else {
// grey them out
colorToUse = tintColor;
}
[dictionary setObject:colorToUse forKey:(NSString *)kCTForegroundColorAttributeName];
return dictionary;
}
この特定のコードは、iOS 7 でハイパーリンクを色付けするために使用できます。
上部のdispatch_once
コードは、常に 1 つのディクショナリが使用されるようにします (したがって、このメソッドを呼び出すたびに新しいディクショナリを割り当てる必要はありません。
一番下のコードは、現在のアプリの色合いに基づいて色合いを調整します。そのため、UIAlertView または UIActionSheet がポップアップすると、すべてのリンクが青色から灰色に変わります。
使用するには (ラベルなど):
NSString *text = @"Hello, world!";
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:text];
[attributedString addAttributes:[MyConstants linkAttributes] range:NSMakeRange(0, [text length])];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];
label.attributedText = attributedString;
これは古い質問だと思いますが、アプリケーションで再利用可能なスタイルを使用できるようにするフレームワークの他の提案を次に示します。
オープンソース:
クローズド ソース (ただし無料):
カテゴリを使用する必要があります。次に例を示します。
@interface UILabel (FontName)
- (void)setFontName:(NSString *)name;
@end
@implementation UILabel (FontName)
- (void)setFontName:(NSString *)name
{
self.font = [UIFont fontWithName:name size:self.font.pointSize];
}
@end