39

iOS 7 では、新しい画面の端からスワイプ ジェスチャを使用して戻ると、[戻る] ボタンのタイトル (「アーティスト」) がピンク (下の例) から通常のフォントの太さから黒にフェードします。フォントの太さを太字にします。

ここに画像の説明を入力

この効果を実現するために、アニメーションは 2 つの異なるラベルを使用しているように思えます。一方がフェードアウトし、もう一方がフェードインします。ただし、Apple は何らかの方法でフォントを調整して、通常のラベルが太字のラベルに完全に重なるようにしました。これにより、1 つのラベルが 2 つの異なる太さと色の間でモーフィングするように見えます。

通常のフォントの文字間隔を単純に調整して、太字のフォントに合わせただけですか? その場合、それは iOS 7 でどのように達成されるのでしょうか? Text Kit にはこれを行うための優れた機能がありますか、それともどうすればよいですか?

4

3 に答える 3

95

を使用して、このように文字間隔を調整できますNSAttributedString

Objective-C の場合:

NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"The Clash"];
[attributedString addAttribute:NSKernAttributeName
                         value:@(1.4)
                         range:NSMakeRange(0, 9)];
    
self.label.attributedText = attributedString;

スウィフト 3 では:

let attributedString = NSMutableAttributedString(string: "The Clash")
attributedString.addAttribute(NSKernAttributeName, value: CGFloat(1.4), range: NSRange(location: 0, length: 9))

label.attributedText = attributedString

Swift 4 以降では:

label.attributedText = NSAttributedString(string: "The Clash", attributes: [.kern: 1.4])

カーニングの詳細については、 Text Programming Guide の Typographical Concepts を参照してください。

太字と通常のテキストのフォント間隔を自動的に一致させる TextKit 機能はないと思います。

于 2014-01-15T15:15:17.537 に答える