2016-08-12 8 views
2

私はiOS開発に慣れていないので、当然のことながら、私のスタックビューや自動レイアウトの制約がXcodeにあります。もともとは、制約とピンメニューを使ってすべてを整列させましたが、実際にスタックビューを取得しようとしていたので、私は戻って実装しました。自動レイアウトとスタックビューを自動調整できない(Swift 3、Xcode 8)

App Interface

あなたは私のアプリでは、私は、スタックビューのカップル作成した表示されます上記の私の画像を見れば:

  • ステータスバーの垂直スタック
  • 第1の垂直スタックを
  • 第1のディバイダ(高さ0.5のビューであり、スタックの内側にはない)
  • 第2章では、メインの内側に2つの水平スタックを含んでいます垂直スタックビュー
  • 第2分周器
  • セクション3(わずかセクション2 & 3との間の第1分周器とまったく同じもの)は、垂直スタックとメイン垂直スタック

の内部水平スタックおよびこれらの全てが含まれていスタックと2つのディバイダは、User Interfaceという1つのスーパー垂直スタックにグループ化されています。

私の問題の1つは、私のスタックと仕切りの間に上下の制約を設定できないことです。それは、セクションと仕切りの間に私が好きなほど余裕があります。イメージ1を見ると、セクション1とステータスバーの間に15という上限制約を設定しようとしました。私はまた、私の最初のディバイダとセクション1の間に15という上限制約を設定しようとしました。私は矛盾する制約を受けているだけで、理由を理解できません。彼らが言うのはSection1.top = Status Bar.bottom + 151st Divider.top = Section1.bottom + 15などです。 競合を解決する方法はありますか?分周器を動かすたびに、元の場所に戻り、制約数を調整すると同じエラーが発生します。

私の2番目の問題は、スーパービューの内部に合わせてユーザーインターフェイスを取得できないことです。私は自分のアプリがすべてのiPhoneの画面サイズに収まるようにし、それに応じて自動的に調整したい。私がやってみたのは、ピンメニューを使って、ユーザーインターフェイススタックの各側を0(制約を未チェックに制限)の制約で固定することでした。ユーザーインターフェイスは、整列され、画像これは、高さと私のラベルの垂直方向の位置のいくつかが曖昧であることを言って、エラーのカップルになり2に見られるように、いずれかの紛争が、その後、私のスタックのすべてずに踏み付けます:

  • あなたは画面を下に行くようにHeight and vertical position are ambiguous for "Tip Percent Segment Control".

  • Height and vertical position are ambiguous for "Bill Amount Text Field".
  • Height is ambiguous for "BILL AMOUNT".は、より多くのラベルが踏み付けされているように、よりエラーがあるサイズ。そして、私はすでにラベルごとに個別の上限と下限の制約を設定しました。ラベルごとに高さを設定しても、エラーメッセージは消えますが、私のラベルのすべてがスタック内に表示されるわけではありません。私はAlignment and Distributionメニューを使いこなし、スタックのために異なるものを選んでみましたが、どれも問題を解決していないようです。

    ご迷惑をおかけして申し訳ございません。私はXcode 8 beta 4を使っていて、Swift 3.0でこのアプリを書いています。

  • 答えて

    -5

    TL; DR;

    私の経験から。 Interface Builderの使用をやめ、コード内のすべてのビューを作成します。 new anchor systemまたはSnapKitのようなフレームワークは非常に簡単です。あなたが得るメリット:あなたはチームで作業しているときは

  • XCodeのは
  • をクラッシュはほとんどないマージする(練習のいくつかの時間後)

    • 迅速な開発
    • Interface Builderをからない愚かな警告
    • が簡単

    私は数ヶ月間IBと戦っていましたが、今は完全に満足しています。 幸運。

    +3

    これは現代のiOS開発者が行うべきこととは正反対のアドバイスです。設計ツールには理由があるため、それらを活用して最新のプラクティスを採用することができます。すべての手巻きを行うことは、Xcodeの全旅程やデザインエコシステム全般にわたる反例でした。ツールを習得し、ルールではなく例外によってコードにジャンプするだけです。 – Marchy

    +0

    実際に@Marchy私は2年前から(インターフェースビルダーを使用する前の)「手作り」のビューを使って作業していましたが、もしあなたがそれを行うなら、柔軟性、スケーラビリティ、手で "(よく呪われている)は、あなたがIBを使うと容易に達成可能ではありません。あなたがそれを使いたいなら、ツールはそこにあります!いくつかのケースでは事がより簡単になり、他の人にとっては本当に複雑になります!そして、リンゴはそれを開発したので、あなたはそれを使用しなければならないと思ってはいけません...すべてはあなたの年功、あなたのプロジェクトとニーズに依存します、物事を行う方法は一つだけです。 – BrunoX

    +0

    Xcodeのインターフェイスビルダは、初心者のためのiOS開発への入門レベルが低く作成されました。開発者がしばらくしてIBに固執すれば、それは彼のレベルです。コードのようにこのレベルの柔軟性とメンテナンスは得られません。 – Eugene

    -2

    これを参照してください。documentation - すべての自動レイアウトの概念については、かなり明確な説明があります。
    私はあなたの問題は、それぞれの要素が他の要素に比例している大きなスタックビューを使用していることを前提としています。これを解決してください。

    スタックは本当に良いことですが、悪用するべきではありません。

    関連する問題