オープンソースこねこね

Webプログラミングなどについてあれこれ。

xcode6でViewのconstraintに-16がついてiOS7.1でレイアウトがずれる件

xcode6でビューを重ねている状態で、子のビューを親のビューの端にぴったりあわせるるために、オートレイアウトを指定するとなぜかHorizontal Spaceに-16が設定される。しかもこれをiOS8で動かすと綺麗に端がぴったりあって表示されるのに、iOS7.1で動かすとずれて表示されるという状態に。

これがiOS8で

f:id:kohkimakimoto:20141113120025p:plain

こっちがiOS7.1

f:id:kohkimakimoto:20141113120030p:plain

青い領域が子のViewでconstraintが指定してある。青いViewの中にあるテキストフィールドがずれてしまっているが判るだろう。ついでに画面上にピッタリつけたはずの部分にも隙間ができてしまっている。。。

そしていつものstackoverflowから解決策を。

ios - How do I get rid of the -16 when doing horizontal layout to the edge of the superview in Xcode 6? - Stack Overflow

Constraintの指定からRelative to marginのチェックを外す。これが付いているとConstraintの対象が親のVIewの端にならないためなんだそうだ。しかしiOS7と8でUIレンダリング(オートレイアウト周り?)の挙動が違うのは辛いものがあるなあ(T . T)。。。