問題タブ [nslayoutconstraint]

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 投票する
2 に答える
2379 参照

iphone - コードで NSLayoutConstraints を作成する

制約を使用するのはこれが初めての試みなので、初歩的な質問をお許しください。

サブビューがビューの幅またはビューの幅の 75% 未満になるように、一連の制約を設定できるようにしたいと考えています。したがって、サブビューの幅がビューの幅の 75% を超える場合は、それを全幅に設定します。subView が iPhone と iPad で適切に表示されるようにするために、これを行いたいと考えています。

これは制約を使用して可能ですか? 2 つの制約を設定しましたが、ビューの幅に基づいてどちらを選択するかを制約システムに伝えるにはどうすればよいですか?

かなり行き詰まっているので、どんな助けも大歓迎です。

デイブ

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

core-animation - 定数を調整する代わりに、NSLayoutConstraints を追加および削除してアニメーション化する

下部がスーパービューと同じ高さの NSButton があり、上部がスーパービューと同じ高さになるようにアニメーション化して上に移動したいと考えています。

WWDC 2012 セッション 228: 自動レイアウトをマスターするためのベスト プラクティスでは、レイアウトの変更をアニメーション化する 2 つの方法 (31:16) について言及しており、CoreAnimation 手法を使用しようとしています。以下の例では、NSButton を正しく移動しますが、アニメーションなしで瞬時に移動します。

NSLayoutConstraints を追加および削除して、CoreAnimation に変更をアニメーション化する方法を理解させることはできますか? ボタンの古い位置と新しい位置の間の距離を決定し、その量だけ NSLayoutConstraint の定数を調整するよりも簡単に思えます。

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

objective-c - ページアプリケーション+自動レイアウト+スクロール中のサブビューのスケーリング

コントローラーの作業を4日間行っていますが、問題を解決できません。

私のアーキテクチャを説明しましょう:

ScrollViewとanImageViewを含む「Rootview」があります(どちらもIBに追加されています)

次に、4つの外部ビューコントローラーがあります。

私が欲しいのは:4つのビューコントローラーをスクロールビューに配置し(これは正常に機能し、両方のビューがコードのscrollViewに追加されます)、ユーザーがビュー間をスクロールできるようにします

スクロールすると、ビューを50%に拡大縮小してから、100%に再拡大縮小する小さなアニメーションが表示されます。

IBで「自動レイアウト」を無効にすると、すべてがうまく機能します。私のアニメーションと私の見解の位置。しかし、iPhone4とiPhone5でアプリを動作させたいので、無効にすることはできません。

すべてのビューを正しく配置するための制約を実装する方法がわかりません。iPhone 4の画面に収まるように、ビューの高さを50ピクセルに変更したいだけです。

私のscrollViewConfigurationがあります

viewControllerフレームのフレームを設定した部分は、自動レイアウトを無効にした場合にのみ機能します

私が言いたかったことをあなたが理解していないことを願っています...

私の悪い英語でごめんなさい...

プイス

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

ios6 - 自動レイアウト制約を使用して、カスタム幅でボタンを中央に配置するにはどうすればよいですか?

次のコードを参照してください。

私が抱えている問題はH:|-[start(100)]-|うまくいきません。私が欲しいのは、X軸を中心とし、デフォルトのマージンで画面の下部に取り付けられた幅100のボタンです。これを削除するとすぐに機能(100)しますが、ボタンは画面の幅からデフォルトの余白を引いた幅まで伸びます。カスタム幅を指定すると、自動レイアウトシステムでは左右の余白を計算できないと思います。Unable to simultaneously satisfy constraints.エラーが発生します。これは、のダッシュと関係があると思います。ダッシュは、デフォルトのマージンではなく、要素をH:|-[start(100)]-|にアタッチするために流動的な幅を持っている必要があります。startsuperview

私がこれをどのように解決するかについて何か考えはありますか?

更新(ghettopiaに感謝):

UINavigationControllerこれは機能します(アプリデリゲートでaを使用していて、 self.view.translatesAutoresizingMaskIntoConstraints = falseinviewDidLoadTestControllerコメントアウトされていることに注意してください):

正しい画面

素晴らしい。これで、意図したとおり、X軸の中央にボタンがあり、デフォルトのマージンが下にあるブルースクリーンが表示されます。self.view.translatesAutoresizingMaskIntoConstraints = falseただし、自動レイアウトを機能させるには、私が読んだものから必要です。UINavigationControllerこれを実現するために、これも機能します(今回は使用しておらず、self.view.translatesAutoresizingMaskIntoConstraints = falseISが使用されていることに注意してください)。viewDidLoadTestController

しかし、それは適切な解決策のようには思えません。UINavigationControllerアプリの構造を作成する必要があります。上記の解決策を使用しないと、真ん中(両方の軸)にボタンがない黒い画面が表示されます。ビューが壊れているようです: 黒い画面

考え?私はそれを削除self.view.translatesAutoresizingMaskIntoConstraints = falseして忘れるべきですか、それとも本当に必要ですか?もしそうなら、私のコードに何か問題があるに違いありません。

アップデート2:

興味深いチュートリアル:iOS 6の自動レイアウト:コードを介した制約の追加。作者はで使用せず、サブビューでのみ使用self.view.translatesAutoresizingMaskIntoConstraints = falseします。viewDidLoad

アップデート3:

の代わりにメソッドに移動self.view.translatesAutoresizingMaskIntoConstraints = falseすることで、ブラックスクリーンの問題を解決できたと思います。なぜこれが機能するのかはわかりませんが、最初に意図したように、画面はスクリーンショットと同じように見えます。更新されたコードは次のとおりです。initviewDidLoad

0 投票する
3 に答える
10245 参照

xcode4 - 制約ベースのレイアウトで、Interface Builder がカスタム ビューの固有のコンテンツ サイズを尊重するようにするにはどうすればよいですか?

XCode 4.5 の Interface Builder は、一部のビュー (NSButton など) のintrinsicContentSize を尊重しますが、独自のカスタム サブビューでそれを尊重するように説得することはできません。これにより、IB で描画されたレイアウトを強制しようとする追加の制約が IB に追加され、プログラムの実行時に固有のサイズが使用されなくなります。

たとえば、ウィンドウの中央に配置されたボタンと、ウィンドウの中央に配置されたカスタム ビューを考えてみましょう…</p>

中央に配置された NSButton の IB 制約

中央揃えの NSView の IB 制約

カスタム ビューが 4 つの制約を取得していることがわかります。これは、おそらく IB がビューの本質的なコンテンツ サイズを認識していないためです。追加する追加の制約は変更できます。たとえば、代わりに幅と高さを強制することはできますが、それらを削除することはできません。

私はawakeFromNibで余分な制約を検索して削除することでこれに対処していますが、これを行うためのより良い方法があるはずです.

0 投票する
3 に答える
47155 参照

objective-c - デバイスの回転時に iOS が自動レイアウト制約を変更する

デバイスが回転するときのレイアウトの制約を変更したい。MyUIViewControllerは 2UIViewsで構成され、横向きでは横方向に、縦向きでは縦方向に配置されます。

それは実際に機能しwillAnimateRotationToInterfaceOrientationます. では、必要な制約を削除し、それらを他のものに置き換えて適切なレイアウトにしました...

しかし、回転中に自動レイアウトが呼び出される前に制約を破り始めるという問題があるwillAnimateRotationToInterfaceOrientationため、デバイスの向きの変更が発生したときに制約をどこで置き換えるつもりですか?

別の問題はパフォーマンスです。数回回転させた後、システムは制約を破ることはありませんが、特に縦向きモードではパフォーマンスが大幅に低下します...

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

ios - iPadのNSLayoutConstraintSIGABRT

アプリケーションはInterfaceBuilderで作成されます。iPhoneとiPad用の別々のストーリーボード。プロジェクトは、iPhone Simulator、iPad Simulator、最新のiOを搭載したiPhone 4で正常に実行および動作しますが、2012年春にiOs5.1を搭載した「新しいiPad」でビルドするとこのエラーが発生します。修正/説明?

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

ios6 - NSLayoutAttributeCenterX が NSLayoutAttributeWidth との「無効な組み合わせ」である理由

スーパー ビューの幅に基づいて、自動レイアウト マネージャーにビューの中心点を調整させようとしています。それが属性の「無効なペアリング」である理由がわかりません(クラッシュと NSInvalidArgumentException によって通知されます)

これが「無効なペアリング」である理由と、これにどのようにアプローチすべきかを誰かが説明できますか? ありがとう

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

iphone - uiview 制約を無効にする方法

ビューの特定の変更に基づいてすべてのフィールドを強制的に再レイアウトするために、コードから uiview の制約を無効にしたいと考えています。

たとえば、固定の VerticalSpace 制約が与えられた 2 つの UILabels があるとします。そして、いくつかのユーザーイベントでは、一番上にあるラベルのサイズを変更しています。制約を強制的にコードから無効にできるようにしたいと考えています。

制約を使用するのはこれが初めてで、コードからこれを行う方法がわかりません。デバイスが回転すると、UIView の制約が無効になることを知っています。

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

ios - UIView transitionFromView:toView: およびレイアウトの制約

[UIView transitionFromView:toView:...]レイアウト制約を使用する正しい方法は何ですか?

toViewを制約するスーパービューに制約をインストールしたい。toView にはまだスーパービューがないため、遷移呼び出しの前にそれを行うことはできません。(呼び出しの後、実行ループが進行する前でも同じです。) 完了ブロックがインストールされるまで待機するということは、ビューが制約なしでアニメーション化されることを意味します。