ユーザーのアクションに応じてサブビューのフレームを動的に変更する必要があるビューがあります。ビューが読み込まれると、次のようにサブビューを初期化します。
if (self.firstSubview == nil) {
NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"FirstSubView" owner:self options:nil];
for (UIView *view in views) {
self.firstSubview = view;
}
}
その後:
[self.view addSubview:self.firstSubview];
初期化したら、サブビューのフレームを変更したい場合は、次のようにします。
self.firstSubview.frame = CGRectMake(0, 80, self.firstSubview.frame.size.width, 200);
私がやりたいことは、ユーザーがボタンをタップしたときにサブビューの Y 座標とその高さを調整し、ユーザーがボタンをもう一度タップしたときにサブビューの元のフレームを取り戻すことです。ただし、これが機能しない場合があることがわかりました.Y座標と高さは、CGRectMake
関数で言うように常に設定されていないようです。関数は常に絶対値を取るとは限らず、代わりに最後のフレームの値に依存するように見えます...つまり、この関数呼び出しの後、フレームが常に Y = 80 座標を取るとは限らないようです。
多分私はこれがどのように機能するかを誤解しています: ビューのnib
ファイルで、私はその上と下のバーを設定したSimulated Metrics
ので、ビューの高さはそれらのバーの間の残りのスペースでなければならず、(0,0) 座標は左上でなければなりませんトップバーの下のコーナーですよね?足りないものはありますか?フレームを変更するたびに、サブビューを再初期化して追加する必要がありますか? または、フレームの変更を適用するために他にすべきことはありますか?
前もって感謝します