web-dev-qa-db-ja.com

iOS自動レイアウトとSprings&Struts

1年前に自動レイアウトの利点に関するApple WWDC基調講演)をいくつか見ましたが、実際のプロジェクトでそれらを試したとき、ストーリーボード上のUI要素を移動したときにもそれを経験しましたわずかに、それは制約の半分を破り、自動レイアウトのすべての利点を無効にします。

これまで、Springs&Strutsを非常にうまく利用してきました。また、KVOと組み合わせて、ビューのframeパスを監視し、回転の再調整のほとんどを適切に処理しました。ほんの数行のコード。

では、iOS 7がリリースされたので、質問がありました。iOS7アプリでのみSprings&Strutsを正常に利用し続け、自動レイアウトの使用を回避できますか?それとも私はそうすることによって何かを失っていますか?さまざまなシナリオで自動レイアウトを使用するスキルを習得して習得するには、おそらく数日かかるので、議論の余地のあるアドバイスをいただければ幸いです。


解決済み:Maxの回答のおかげで、私は自動レイアウトを掘り下げ始めました。 Nullは彼の答えに正解ですが、実際にはiOS 7でSprings&Strutsをそれほど問題なく使用できますが、自動レイアウトは強力です。

どうやらXcode5では、次のことが修正されています。

  • 制約を削除するために、実際に古代のシャーマニック雨乞いを実行する必要はありません。それを削除すると、レイアウトは警告モードになり、自動レイアウトを機能させるために解決する必要のある問題を示します。

  • 物事を動かしても、制約は変わりません。 InterfaceBuilderのビューフレームのみが変更されます。

  • Interface Builderのフレームが実際にレイアウト制約フレームで計算されたものと異なる場合、InterfaceBuilderはその要素のランタイムフレームを赤い点線で示します。最後に、それは正しく行われます。ありがとう、アップル。

  • これは、Xcode5でそれらすべてを利用する方法を示すWWDC2013セッションへのリンクです。これを表示するには、Apple開発者アカウントが必要です。

だから私の選択は今自動レイアウトです。みなさん、ありがとうございました。

23
Dannie P

自動レイアウトは未来であり、Springs&Strutsは過去です。 Springs&Strutsを使い続けると、新しい標準であるAuto Layoutが普及するため、不利になります。

また、Springs&Strutsは複雑なビューには効果的ではありません。自動レイアウトはかなり強力です。

IOS 7では、それは初期の段階であり、その影響が正確に何であるかはわかりませんが、 iOS 7 UI移行ガイド は、自動レイアウトを使用すると移行プロセスが簡単になると具体的に述べています。

アプリで自動レイアウトを使用すると、作業が簡単になります。 Xcode 5では、自動レイアウトは、アプリが新しいUI要素の指標に対応し、テキストサイズの動的な変化に適切に対応するのに役立ちます。自動レイアウトは、iOS 6アプリを移行する場合、またはiOS6とiOS7の両方をサポートする必要がある場合に特に役立ちます。

自動レイアウトを使用しなかった場合、特にアプリの複数のバージョンをサポートする必要がある場合は、今が開始するのに最適な時期かもしれません。手動またはプログラムによるレイアウト手法を使用する場合は、テキストサイズが変更されたときにレイアウトが適切に調整されるようにする必要があります。

個人的には、Xcode4.6.3から自動レイアウトを使用しています。最初の学習曲線は苦痛ですが、その後は本当に使うのが楽しくなります。 Springs&Strutsに戻ったり、フレームを使用して手動でメトリックを計算したりすることは絶対にありません。

23
Max MacLeod

はい、iOS7でもSprings&Strutsを使用できます。ビューの修正に苦労しましたが、ベータ版アプリでは機能しますが、最終的には機能します。

以下をお読みください。

アプリケーションがすでに自動レイアウトを使用している場合、これはユーザーの表示デバイスの解像度と向きに合わせてレイアウトを自動的に調整する開発ツールであり、iOS7への移行はかなり簡単です。そうでない場合は、開始する必要があるかどうかを評価することをお勧めします。開始する必要がある最大の理由は、iOS7では、ユーザーがテキストサイズを変更できるようになり、アプリケーションは、目的のテキストサイズをサポートするようにレイアウトを更新することで、これを尊重することが期待されるためです。 「SpringsandStruts」またはプログラムによるレイアウトを使用している場合は、レイアウトを正しくするために、ビューの操作にかなりの時間を費やす必要があります。もちろん、これはiOS6をサポートするための決定にも影響を与える可能性があります。

参照 ここ

4
Tarek Hallak

自動レイアウト を使用する必要があります。これは、制約の使用方法がより更新されているためです。

1
user2356557