1

Autolayout に苦労しています (新しいアプリで初めて使用します)。

次の状況:

  • 絵コンテ
  • iPad
  • 自動レイアウトが有効

1 つのポップオーバーで、ユーザーの選択に従ってプログラムで 8 つのボタンを再レイアウトする必要があります。これは、ボタンを 180° 回転させる必要がある瞬間まで正常に機能します (アプリの機能である逆さまに表示するため)。

ローテーションのコードを追加するとすぐに、再レイアウトが機能しなくなります。なぜボタンの位置を変更できるのか (ケース 2 のように) はわかりませんが、回転すると機能しなくなります。

ケース 1:

ボタン 0 | ボタン 1 | ボタン 2 | ボタン 3
ボタン 4 | ボタン 5 | ボタン 6 | ボタン 7

ケース 2:

ボタン 7 | ボタン 6 | ボタン 5 | ボタン 4
ボタン 3 | ボタン 2 | ボタン 1 | BUTTON 1
(すべてのボタンが 180°回転、つまり上下逆さま)

AutoLayout をオフにすると、魅力的に機能します。問題は、AutoLayout をオフにするとすぐに、アプリの残りの部分が完全に台無しになることです。

誰かが私がこの問題を理解するのを手伝ってくれたら、それは素晴らしいことです.

コードはviewDidAppearにあります

for (UIButton *button in self.allButtons) {

    if (button.tag == i) {

       button.transform = CGAffineTransformMakeRotation(M_PI);

       button.frame = CGRectMake((300 - (100 * currentButtonPosition)) + offsetWidthButton, offsetHeightButton, 100, 100);
       NSLog(@"Button Tag Nr: %d\nFrame:\nX=%f\nY=%f\nW=%f\nH=%f",button.tag, button.frame.origin.x, button.frame.origin.y, button.frame.size.width, button.frame.size.height);

                    }

                }

ボタンのフレーム座標は、NSLog 出力ですべて正しいです。どういうわけか、button.transform が .frame = CGRectMake の部分を台無しにしていると思いますが、なぜ私には理解できないので、神秘的な autoLayout を研究し続けるために、あなたの助けやガイダンスを楽しみにしています。

説明が理解できることを願っています:-)

ありがとう、良い一日を ロニー

4

2 に答える 2

1

自動レイアウトを使用している場合は、ボタンのフレームを設定するのではなく、制約を変更する必要があります。

于 2013-05-27T11:02:11.117 に答える
1

バグまたは予期しない動作は、Xcode の最新バージョンで少し改善されましたが、まだ厄介です。たとえば、1 つの XIB で AutoLayout を個別にオフにすることはできませんが、1 つの XIB で変更しても他のチェックボックスは変更されません。

やりたいことは次のとおりです。

自動レイアウトをオフにする前に、すべてのビューの制約に従ってフレームを設定し、アプリケーションのすべてのビュー内のすべての制約を削除してから、自動レイアウトをオフにします。

もちろん、プログラムではなくIBで制約を設定しているため、これははるかに苦痛ではありません。

残念ながら、自動レイアウトは期待される機能にまだ大きく遅れをとっています。特に、固有の位置の定義と認識に欠けており、制約の自動設定ではさらに悪化しています。それは改善のための広大な領域です。

于 2013-10-16T06:49:36.440 に答える