1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SwiftUI日本語の半角()が少し下がって見えるのを簡単に修正

Last updated at Posted at 2025-04-15

半角()を使いたい!でも下がって見えるのが気になる!

使用前❌
スクリーンショット 2025-04-15 14.31.45.png

使用後⭕️
スクリーンショット 2025-04-15 14.30.58.png

()の位置の違いわかりますか?

全角()だと余白が大きいので半角()を使いたい場面が多々あります。そのままだと文字のベースラインが()だけ少し下がってしまいます。元デザイナーとしてはとても気になります。iOS15以降から使える()のベースラインを調整する拡張メソッド?を書きました。

sample.swift
extension Text {
/// 指定した文字列中の "(" と ")" の baselineOffset を日本語環境の場合のみ調整して Text を生成する初期化子
    /// - Parameters:
    ///   - kakkoAdjust: 調整対象の文字列。
    ///   - offset: baselineOffset の調整値(デフォルトは +1上にあげる)
    init( kakkoAdjust: String, baselineOffset offset: CGFloat = 1) {
        // Markdown として変換を試みるが、失敗した場合は通常の AttributedString を生成する
        var attrStr = (try? AttributedString(markdown: kakkoAdjust)) ?? AttributedString(kakkoAdjust)
        // 現在の言語が日本語の場合のみ、括弧のbaselineOffsetを調整する
        if Locale.current.language.languageCode?.identifier == "ja" {
            // 括弧 "(" のbaselineOffsetを調整
            if let range = attrStr.range(of: "(") {
                attrStr[range].baselineOffset = offset
            }
            // 括弧 ")" のbaselineOffsetを調整
            if let range = attrStr.range(of: ")") {
                attrStr[range].baselineOffset = offset
            }
        }
        // 調整後のAttributedStringを用いてTextを生成
        self.init(attrStr)
    }
}

使い方

    VStack{
                Text( kakkoAdjust: "5月5日(月)(使い方)")
            }
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?