0

ユーザーが自由にパレットと呼ぶものを追加できるアプリがあります。項目 ( UIViews) は、あるパレットから別のパレットにドラッグできます。sizeToFitアイテムが追加または削除されたときにパレットのサイズを自動的に変更する方法を使用できると思いましたが、サイズ変更は行われていないようです。

ドキュメントには、サブビューに合わせてメソッドのサイズが最も適切なサイズに変更されると記載されています。UIViewsプログラムで追加することは含まれませんか?

sizeToFit組み込みのメソッドを動作させることができれば、独自のメソッドを作成する必要はありません。しかし、それは何もしていないようです。私が試したコードは次のとおりです。

        CGPoint oldCenter = self.pieceBeingMoved.center;
        CGPoint newCenter = [self.pieceBeingMoved.superview convertPoint:oldCenter toView:destinationView];
        [destinationView addSubview:self.pieceBeingMoved];
        self.pieceBeingMoved.center = newCenter;
        if (destinationView.tag == 20000) {
           NSLog(@"DestinationView is a palette, so resize it from %@",NSStringFromCGRect(destinationView.frame));
           [destinationView sizeToFit];
           NSLog(@"DestinationView resized to %@",NSStringFromCGRect(destinationView.frame));
        }

サブビューを追加する前後のサイズは同じです。追加されるサブビューは、このテストを実行した時点で唯一のサブビューであり、サブビューのサイズは移動先のパレットのサイズの約 5% です。では、なぜビューのサイズが変更されないのでしょうか? 自分でやる必要がありますか?

4

2 に答える 2

1

このsizeToFitメソッドは単に呼び出しsizeThatFits:て、それに応じてビューのサイズを変更します。UIView クラスのデフォルトの実装は現在のサイズを返すため、影響はありません。計算を行うには、独自のsizeThatFits:メソッドを作成する必要があります。

于 2013-05-13T20:10:55.343 に答える
0

これがアイデアです。電話しないでくださいsizeToFit。フレームを実際に必要なフレームに設定するだけです。

于 2013-05-13T22:17:01.917 に答える