Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS: disable UI mirroring in XIB

in iOS 6 there's a new "feature" that mirrors the UI elements in the xib file if the user is on right-to-left locale (hebrew, arabic). (http://developer.apple.com/library/ios/#documentation/miscellaneous/conceptual/iphoneostechoverview/iPhoneOSTechnologies/iPhoneOSTechnologies.html)

It completely messes up my interface.

Is there a way to disable it without disabling auto-layout?

like image 1000
marmor Avatar asked Feb 06 '13 08:02

marmor


Video Answer


2 Answers

Followed by the solution of @silyevsk - here is a quick method worked for me to fixed the UI mirroring: Open your xib file in text editor (xcode/textedit/atom etc.) Using the replace tool, replace the following:

firstAttribute="trailing" with: firstAttribute="right"

secondAttribute="trailing" with: secondAttribute="right"

firstAttribute="leading" with: firstAttribute="left"

secondAttribute="leading" with: secondAttribute="left"

Worked for me and saved many struggling hours with IB.

like image 117
OzB Avatar answered Oct 16 '22 17:10

OzB


Horizontal constraints have the "Direction" option in Interface Builder. By default it's set to "Leading to Trailing" which causes the mirroring. You can set it to "Left to Right" to disable the mirroring.

Note, changing all the constraints by editing storyboard/xib files causes exceptions or messed up layout, it seems that Interface Builder creates / changes some additional constraints when changing the direction setting.

So the faster way I found to change the existing xib/storyboard, is to select all the constraints with the "Leading to Trailing" set, change them all together to "Left to Right" and then check if some new horizontal constraints were automatically created - their direction should be changed to "Left to Right" as well.

like image 10
silyevsk Avatar answered Oct 16 '22 17:10

silyevsk