16

次のようにフォントを変更して、SF の等幅数字フォントを使用して、テキスト フィールドに整数を表示したいと考えました。

textField.font = UIFont.monospacedDigitSystemFont(textField.font!.pointSize, weight: UIFont.Weight.semibold)

しかし、テキスト フィールドのテキストを 60 Hz の周波数に設定すると、次のようになります。

SF 等幅

テキストの幅は、同じ桁数に対して明らかに一定ではないため、テキストフィールドは下の画像の「先頭」と「末尾」に制限されているため、すべてぎくしゃくしています。 これはなぜですか?また、どのように修正すればよいですか?

「Menlo」のような別の真の等幅フォントは、正しく動作しています。

メンロ

4

4 に答える 4

9

したがって、テキストフィールドの「調整して合わせる」オプションを設定すると、フォントの等幅プロパティが上書きされるようです (ビューがテキストを含むのに十分な大きさであっても!)

この時点での私の一時的な解決策は

  • textField.adjustsFontSizeToFitWidthに設定false
  • 等幅フォントを再度設定します (adjustsFontSizeToFitWidth のセッターによって上書きされたため)。
  • テキストの変更を開始する
  • 終了したら、ユーザー入力で正しく動作するように再度設定textField.adjustsFontSizeToFitWidthしますtrue

これは私が最初に望んでいたものではありませんが、回避策として機能します

ここに画像の説明を入力

于 2016-07-01T18:20:42.013 に答える
2

「調整して合わせる」オプションを使用するプロジェクトがありdidSet、ラベル アウトレットを使用して等幅プロパティを設定すると、Xcode 8 Beta 3 で動作するようです。

@IBOutlet weak var textLabel: UILabel! {
    didSet {
        textLabel = UIFont.monospacedDigitSystemFont(ofSize: textLabel!.pointSize, weight: UIFontWeightRegular)
    }
}
于 2016-08-01T18:32:05.787 に答える
0

私の場合、fontUILabel のプロパティを等幅数字フォントattributedTextに設定し、テキストの設定に使用していました。これは iOS 9 では機能しましたが、iOS 10 では機能しませんでした。回避策は、属性付きの文字列でフォント属性を明示的に設定することです。

于 2017-01-10T00:09:59.340 に答える