0

iOS には少し慣れていませんが、すぐに習得できます。

アプリには多数のラベルと UIText フィールドがあります。実際の iPad でそれを見た後、一連のフィールドのテキストを、それが何であれ、Helv Neu の凝縮された太字のサイズ 24 に変更したいと決めました。 x のフィールド数にスタイルを設定するだけですが、そのようなものは見つかりません。

ヘルプ!

4

3 に答える 3

3

DB5

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;
于 2013-10-24T22:14:31.627 に答える
0

これは古い質問だと思いますが、アプリケーションで再利用可能なスタイルを使用できるようにするフレームワークの他の提案を次に示します。

オープンソース:

  • インターフェイス CSS - https://github.com/tolo/InterfaCSS
    • UIKit プロパティ名を含む高度な CSS ベースのスタイルシートを使用し、ネストされた宣言、定数などをサポートします
    • iOSのみ

  • NUI - https://github.com/tombenner/nui
    • 定数をサポートする CSS/HTML のようなプロパティ名を持つシンプルな CSS ベースのスタイルシートを使用
    • iOSのみ

クローズド ソース (ただし無料):

  • ネイティブCSS - http://nativecss.com/
    • 標準の CSS/HTML プロパティ名に、いくつかの非標準の追加を加えた高度なスタイルシートを使用
    • 複数のプラットフォームのサポート
于 2014-06-04T20:56:32.430 に答える
0

カテゴリを使用する必要があります。次に例を示します。

@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
于 2013-10-24T21:26:31.390 に答える