私は今、問題を解決しようとして約 3 か月を費やし、ついに助けになりました。5 つの丸い四角形のボタンがあるメニューがあります。最初のボタンをクリックすると、他の 4 つのボタンが下に移動して、最初のボタンの下にサブメニュー用のスペースが作成されるようにする方法があるかどうかを知りたいです。2 番目、3 番目、4 番目、5 番目のボタンも同様です。ただし同時に、最初のボタンをクリックすると他の 4 つが下に移動し、3 つ目のボタンをクリックすると 4 つと 5 つがさらに下に移動し、スクロール ビューが起動できないときにスクロール ビューが起動するようにしたいと考えています。一度にすべてが画面に表示されます。すべての助けを前もってありがとう:)。
2 に答える
実際にこれを行うことができます。これがあなたのための例です。要点は、ボタンを押したときに座標をムービーする新しい IBAction を作成することです。したがって、ボタンを押したときに何が起こるかについてのメソッドがある場合は、これを追加するだけです。
button.frame = CGRectMake(button.frame.origin.x, (button.frame.origin.y), button.frame.size.width, button.frame.size.height);
ボタンの移動先の変更は、そのようなメソッドを作成し、座標を追加するだけで移動できます。たとえば、上のボタンを 150 ピクセル上に移動する場合は、次のようにします。
button.frame = CGRectMake(button.frame.origin.x, (button.frame.origin.y - 150.0), button.frame.size.width, button.frame.size.height);
私がそこで何をしたか見てください。フレームを追加または削除するだけで、ボタンを配置したい場所に移動できます。
UIScrollView(scrollView自体)ではなくtableView内にそれらをすべて配置し、必要にheightForRowAtIndexPath
応じてメソッドをオーバーライドする必要があると思います。このためのカスタムUITableViewCellを作成し、セルが選択されているかどうかを理解して、セル内で切り替えるためのプロパティが必要になる場合がありdidSelectRowAtIndexPath
ます。の最後にあるtableViewのbeginUpdatesメソッドとendUpdatesメソッドを使用してdidSelectRowAtIndexPath
、他のサブビューの移動を自動的にアニメーション化します。
UIButtonの原点を変更して移動することで、そのためのアニメーションを作成することもできますが、私はそれを試しましたが、その数のサブビューでは非常に厄介になります。信じてください。動的な行の高さと選択可能なセルが1つだけの例示的なコードを確認するには、https ://stackoverflow.com/a/13293380/936957を参照してください。複数選択を有効にするには、viewController / UITableViewのデリゲートにNSMutableArrayを配置するか、前に述べたようにカスタムUITableViewCellのプロパティを配置することができます。どちらも正常に機能するはずです。