Instance Method インスタンスメソッド

variantFittingPresentationWidth(_:)

Returns a string variation suitable for the specified presentation width. 指定された提示幅に適した文字列変形版を返します。

Declaration 宣言

func variantFittingPresentationWidth(_ width: Int) -> String

Parameters パラメータ

width

The desired width of the string variation. その文字列変形版のふさわしい幅。

Return Value 戻り値

A string variation, or the original string if no variations exist for the specified width. ある文字列変形版、または変形版がこの指定された幅に対して存在しないならば元の文字列。

Discussion 議論

You can use this method to provide adaptive strings for the user's device—that is, text that avoids truncation and maximizes available space. For example, an app running on an iPad Pro in Landscape orientation might welcome a user with the message “Greetings and Salutations!”, whereas the same app running on an iPhone SE in Portrait orientation might instead show an abbreviated welcome message, like “Hello!”. あなたは、このメソッドを使って適応性文字列をユーザの持つデバイスに対して提供できます — すなわち、切り詰めを回避するそして利用可能な空間を最大限利用するテキスト。例えば、iPad Pro上で「ランドスケープ(横)」向きで動作しているアプリは、ユーザをメッセージ “Greetings and Salutations!” で迎えるかもしれません、一方でiPhone SE上で「ポートレイト(縦)」向きで動作している同じアプリは代わりに短縮されたウェルカムメッセージを示すかもしれません、“Hello!”のように。

Call this method on a string with one or more width variations. You define width variations for a localized string in a Stringsdict file using the NSStringVariableWidthRuleType key, and then retrieve a string with variations using NSLocalizedString. このメソッドを文字列上で1つまたはそれ以上の幅変形版で呼び出してください。あなたは、幾つかの幅変形版をあるローカライズされた文字列に対して定義します、StringsdictファイルにおいてNSStringVariableWidthRuleTypeキーを使って、そしてそれからある文字列をいくつかの変形版でNSLocalizedStringを使って取ってきます。

For example, consider the stringsdict.plist file in the first listing and the corresponding code in the second listing. 例えば、最初のコード出力のstringsdict.plistファイル、そして2番目のコード出力での対応するコードを考えてみてください。


<plist version="1.0"><key>hello</key>
<dict>
    <key>NSStringVariableWidthRuleType</key>
    <dict>
        <key>1</key>
        <string>Hi!</string>
        <key>20</key>
        <string>Hello!</string>
        <key>70</key>
        <string>Greetings and Salutations!</string>
    </dict>
</dict>


let adaptiveString = NSLocalizedString("hello")


print(adaptiveString.variantFittingPresentationWidth(10)) // Prints "Hi!"
print(adaptiveString.variantFittingPresentationWidth(25)) // Prints "Hello!"
print(adaptiveString.variantFittingPresentationWidth(70)) // Prints "Greetings and Salutations!"

Understanding How Width Variants Are Selected どのように幅変形版が選択されるかを理解する

This method selects a variation for a specified width according to the following behavior: このメソッドは、ある変形版をある指定された幅に対して以下の挙動に従って選択します:

  • If no variations exist for the string, the original string is returned. もし変形版がその文字列に対して存在しないならば、元の文字列が返されます。

  • If a variation exists for the specified width, that string is returned. もし変形版がその指定された幅に対して存在するならば、その文字列が返されます。

  • If no variation is found with a width less than the specified value, the variation with the smallest width is returned. もし変形版がその指定された値より少ない幅で見つけられないならば、最も少ない幅での変形版が返されます。

  • Otherwise, the variation with the next smallest width value is returned. そうでなければ、次の最も小さい幅値での変形版が返されます。

Specifying Width Values 幅値を指定する

Smaller width values correspond to shorter strings, whereas larger values correspond to longer strings. By default, width values do not have an associated unit. より小さい幅値はより短い文字列に対応します、一方でより大きい値はより長い文字列に対応します。省略時では、幅値は結び付けられた単位を持ちません。

In iOS, width contexts are measured by the number of em units that fit across the app window. This value depends on several factors, including the size and orientation of the device, the user's preferred content size category, whether the Zoom accessibility feature is enabled, and whether the app is displayed in a multitasking context, such as in Split View or Slide Over. iOSでは、幅コンテキストはem単位の数によって測られます、それはアプリウインドウの至る所に適合します。この値は、いくつかの因子に依存します、デバイスのサイズと向き、ユーザの優先するコンテンツサイズカテゴリを含めて、Zoomアクセシビリティ機能が有効にされるかどうか、そしてアプリがマルチタスキングコンテキストで表示されるかどうか、例えばSplit ViewまたはSlide Overなど。

See Also 参照

Sizing and Drawing Strings 文字列の大きさ指定と描画