半角()を使いたい!でも下がって見えるのが気になる!
()の位置の違いわかりますか?
全角()だと余白が大きいので半角()を使いたい場面が多々あります。そのままだと文字のベースラインが()だけ少し下がってしまいます。元デザイナーとしてはとても気になります。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日(月)(使い方)")
}