textAlignVertical Best Practice
by
Shinnosuke Yamamoto
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
textAlignVertical Best Practice @mrtry 2025/11/04 - React Native Meetup #23
Slide 2
Slide 2 text
⾃⼰紹介 ● JMDC, Inc / ventus, Inc ○ Mobile App Engineer ○ Scrum Master ● React Native Meetup Organizer ● 卒: ⾼専(情報⼯学) / 現: ⼤学⽣(認知科学) 2
Slide 3
Slide 3 text
上下中央揃えしたいが、OSで揃わないので調べた ● テキストの垂直中央揃えが Android / iOS でずれる問題があった ○ iOSは垂直中央揃えされるが、Androidはされてくれないことがほとんど ● 原因は、フォントの描画⽅式の差分だった ● その違いと対処⽅法についてまとめた なんか上に寄ってる こうなってほしい 3
Slide 4
Slide 4 text
フォントには2つの⾼さ基準があった
Slide 5
Slide 5 text
フォントには2つの⾼さ基準があった ● フォントには2種類の⾼さ基準がある ○ ascent / descent ○ top / bottom 5
Slide 6
Slide 6 text
iOSは ascent / descent を基準にする ● iOSはascent / descentを基準にする 6
Slide 7
Slide 7 text
Androidは top / bottom を基準にする ● includeFontPadding で基準が変わる ○ true: top / bottom ○ false: ascent / descent ● default: true のため、iOSとフォントの⾼さに差分が出る 7
Slide 8
Slide 8 text
プラットフォーム別の調整⽅法
Slide 9
Slide 9 text
Androidでの対処法 ● includeFontPadding: false でiOSと⾼さをそろえる ● lineHeightをfont sizeの1.2-1.5倍にする ○ includeFontPadding: false すると、⾒切れることがある ○ Material Design Guidelineに⽬安が書いてある ● textAlignVertical: 'center'で 垂直中央揃え 9
Slide 10
Slide 10 text
iOSでの対処法 ● 何もしなくて良さそうだが、調整必要なら以下を試みる ● lineHeight を fontSize と同じ値にする ○ textAlignVertical がiOSにはない ○ fontに対しての上下の余⽩をタイトにして整える 10
Slide 11
Slide 11 text
実例 11
Slide 12
Slide 12 text
まとめ ● プラットフォームごとにテキストの取扱に差分があった ● 垂直⽅向の中央揃えをするには、それぞれに適した対応が必要 ○ 共通 ■ フォントの⾼さをそろえる ○ iOS ■ lineHeight で垂直の余⽩を無くす (必要に応じて) ○ Android ■ textAlignVertical で中央揃え ■ lineHeight で⾒切れを防ぐ 12