問題タブ [ios-autolayout]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
7037 参照

ios - UITableCellViewでUILabelが「...」で切り捨てられないようにする方法

カスタム テーブル セルに2 つUILabelの があり、Interface Builder でそれぞれ「Lines」が「0」に設定されています。それらは、自動レイアウトによって決定された行の高さを持つテーブル内で、左端と右端が揃えられて垂直に積み重ねられます。しかし、そのうちの 1 つはとにかく切り詰めることを主張しています。なんで?必要な行を取り、表のセルの高さを押し出す必要があります。

ここに画像の説明を入力

0 投票する
1 に答える
641 参照

interface-builder - 長いタイトルを持つ UIButton の自動レイアウトの問題で、幅が固定されている必要があり、決して圧縮されるべきではない、整列されたセグメント化されたコントロールが圧縮されます。

私のXcode 6.2 Swiftプロジェクトでは、自動レイアウト(サイズクラスも使用しています)に問題があり、それを理解できません...

Main.storyboard には、ビューの反対側の同じ高さに配置されたaUIButtonと aなどのインターフェイス要素を含むビューがあります。UISegmentedControl

Interface Builder ですべての制約を手動で設定しています (コードにはありません)。この場合を除いて、すべてのビューが正常に機能しています (この特定の問題は、長いテキストがある場合にのみ発生します)。

ボタンはビューの左端に揃えられ、その制約は次のとおりです。

  • スーパービューへの先行スペース == 0
  • セグメント化されたコントローラーへの末尾のスペース >= 8
  • 他のインターフェイス要素への上部と下部のスペース == 8

セグメント化されたコントローラー (2 つのセグメントを持つ) は、ビューの右側の境界線に配置され、その制約は次のとおりです。

  • スーパービューへの末尾のスペース == 0
  • ボタンの先頭のスペース >= 8
  • 他のインターフェイス要素への上部と下部のスペース == 8

ストーリーボードのボタンには「タイトル」というタイトルが付いていますが、実際には実際のタイトルは常に次のコードで設定されていますViewWillAppear

(考えられるすべてのデバイスと向きで) 達成する必要がある視覚的な結果は、コードで設定したボタンのタイトルが、インターフェイスで十分な長さで表示できる一方で、ラベルを圧縮して、セグメント化されたコントロールのサイズを決して妥協しないことです。 2 つのセグメントの。 したがって、セグメント化されたコントロールのサイズを固定する必要があり、ボタンのタイトルが長い場合はドットで切り詰めることができるという事実を受け入れます。代わりに、ボタンのタイトルが非常に長い場合、何を試しても(すぐに試したことを説明します)、切り捨てられません。代わりに、セグメント化されたコントロールが圧縮されているため、2 つのセグメント ラベルが切り捨てられます。

これまでのところ、次の手順を個別に、または一緒に試しました。

  • セグメント化されたコントロールに幅の最小制約を追加します。
  • ボタンの対応する値を減らしながら、セグメント化されたコントロールのコンテンツ圧縮抵抗を増やしました (段階的に、最大 1000 まで)。
  • ボタンのコンテンツ保持優先度を上げました (最大 1000)。
  • ボタンに最大幅を設定することはできないと思います。これは、コードで設定されたタイトルと、さらに重要なことに、アプリが実行されているデバイスに応じて伸びる可能性があるためです。

私の最大の問題は、何を試しても、アプリを実行すると常に同じ動作になることです (ボタンのタイトルが完全に表示され、切り捨てられず、セグメント化されたコントロールが圧縮されます)。これらの制約を追加しても何も変わらないように思えますが、自動レイアウトでこれまでに起こったことはありません...混乱、多く、しかし制約を追加しても変化はありません。これは新しいです!

ボタンのタイトルがViewWillAppearストーリーボードではなく設定されていることが問題なのかもしれませんが、コードでタイトルを設定できなかった場合、アプリは正しく動作しません。

最後に、非常に重要なことですが、これまでのところ、自動レイアウトとサイズのクラスをすべてのデバイスと、アプリのすべての (10 以上の) ビューコントローラーの向きで動作させることができましたが、実際には一度もAuto.layout クラスと Size クラスの 1 行のコードを記述しました。Interface Builder ですべてを実行しましたが、可能であれば、この方法を続けたいと思っています

どんな提案でも本当に、本当に感謝しています!

前もって感謝します、

チェザーレ

0 投票する
2 に答える
160 参照

ios - 自動レイアウトを使用してコントローラーで UIView を移動する方法

アプリを iOS7/8 にアップデートし、自動レイアウト機能を適用しています。私の中には、がその を更新するときにその位置を変更する必要があるものがUIViewControllerいくつかあります。UIViewsUIScrollViewcontentOffset

フレームを更新するとUIView's(古い方法で)、コントローラーの自動レイアウトの制約が原因でグリッチとエラーが発生します (プログラムで制約を設定するために VFL を使用していますが、ストーリーボードはありません)。

UIViews問題は、Autolayout を実装するコントローラーで移動する正しい/最良の方法はどれですか? 多分制約を更新しますか?Core Animation を使用して何かをUIView動かす必要がありますか?

前もって感謝します!

0 投票する
2 に答える
352 参照

ios - iOS自動レイアウトios7とios8

自動レイアウトios 7およびios 8の改善点は正確には何ですか?

私のアプリは iOS 8 では正常に動作していますが、iOS 7 では動作が異なります。ビューを複数回ロードした後、iOS 7 で制約が壊れています。

以前はios7のautolayoutでは処理できなかったものの、ios 8が現在処理しているものは何かを知りたいです。

iOS 7 と iOS 8 が自動サイズ変更マスク (フレキシブル幅とフレキシブル高さ) を使用して「手動で追加されたサブビュー」を処理する方法と同様に

ありがとう!!

**サイズクラスを使用せず、マージンに相対的

0 投票する
1 に答える
422 参照

ios - Autolayout と Size クラスを使用してカスタム TableviewCell の幅を取得する方法

Any-Any Size を使用Storyboardし、次の制約を定義しますUITableViewCell

  1. SuperView への先行スペース -16.00px
  2. SuperView への末尾のスペース -16.00px
  3. 上部スペースから SuperView 0.00px まで
  4. 下部スペースから SuperView 0.00px まで

UITableViewCell iPhoneのすべてのサイズのフレームを印刷すると、フレームサイズが取得されます

出力の textView セル フレーム {{0, 0}, {600, 44}}。ここで、幅は Any-Any Size の幅と同じ 600 です。

しかし、iPhone5の場合、ここの幅は320であると予想されます..の自動サイズ変更幅を取得するにはどうすればよいですかUITableViewCell.

0 投票する
1 に答える
164 参照

interface-builder - NSLayoutConstraints が追加されないのはなぜですか?

Interface Builder で定義したレイアウト制約のあるビューがあります。それらは一時的に非アクティブ化できないため、次のように呼び出して選択的に削除することにしました。

ただし、その後、制約はまだ内部に存在しますview.constraints。さらに、プログラムで制約を追加したいと思います (繰り返しますが、それらを (非) アクティブにすることはできません)。

NOメソッドを呼び出すと、 variableの値が返されますwasAdded。これは、まったく変更されていないユーザー インターフェイスにも反映されています。

結論として、プログラムで制約を追加することも、ストーリーボードに追加された制約を削除することもできません。私は何を間違っていますか?