iOS7のUITableViewのHeader Section RTL対応化の謎
iOSのRTL(Right-To-Left、アラビア語やヘブライ語など左から右に記述する言語)への対応は、iOS6のAuto Layoutで初めて実装されました。
なので、それ以前から存在しているUITableView
はRTLのことを一切考慮していない…と思っていたんだけど、iOS7以降だとUITableViewHeaderFooterView
がRTLで表示されることがあるみたいだ。
ただその条件と実装がよく分からない。
- 言語設定をRTL言語にすると変化する。
- それ以外でも変化することがある。
- セクションヘッダに表示する文字がRTL言語かどうかは関係ない。
- アプリがRTL言語のローカライズに対応しているかどうかは関係ない。
- タイムゾーンの設定では変化しない。
- シミュレータで言語設定をRTL言語にした後、LTR言語に戻してもセクションヘッダが右寄せのままになることがある…。
Auto Layoutで表示しているだけじゃないかと考え、UITableViewHeaderFooterView
のtextLabel
に対して、constraintsAffectingLayoutForOrientation:
を実行してみたものの、何の制約も取得できなかった。Auto Layoutのleading制約で表示しているわけではない、…と思われる(Auto Layoutはあんまり自信がない)。
また、同textLabel
のtextAlignment
プロパティは常にNSTextAlignmentLeft
を返すので、textAlignment
の指定を変えているわけではないと思われる。しかし明示的にNSTextAlignmentLeft
を指定することで、LTR表記に戻すことができるのがまた良く分からない…。
となると、Text Kitのレイヤで何らかのRTL言語対応が行われて、その影響でiOS7でのみUILabel
の挙動が変わるんじゃないかという可能性が残る。しかし普通のUITableViewCell
はLTR表記のままなのに、セクションヘッダだけ右寄せになる挙動は理解に苦しむ。
うーん…。