いくつかのサブビューを表示することになっているメインビューがあります。これらのサブビューは、(z軸で)互いに真上と真下にあり、次のコードを使用して(y軸で)ドロップダウンして上に移動します。
if (!CGRectIsNull(rectIntersection)) {
CGRect newFrame = CGRectOffset (rectIntersection, 0, -2);
[backgroundView setFrame:newFrame];
} else{
[viewsUpdater invalidate];
viewsUpdater = nil;
}
rectIntersectionは、ビューが完全に下に移動し、前面のビューの後ろになくなったとき(rectIntersectionがnullになったとき)、これがすべて繰り返しタイマー内にあるため、一度に2ピクセルずつ下に移動することを通知するために使用されます。これらの他の2つのビューを含むメインビューを下にサイズ変更して、背景のビューが下がっているのと同じように拡大するようにします。これは私がそのために試しているコードです:
CGRect mainViewFrame = [mainView frame];
if (!CGRectContainsRect(mainViewFrame, backgroundFrame)) {
CGRect newMainViewFrame = CGRectMake(0,
0,
mainViewFrame.size.width,
(mainViewFrame.size.height + 2));
[mainView setFrame:newMainViewFrame];
}
mainViewにこの背景ビューが含まれているかどうかを確認するのが目的です。backgroundViewを下げると、メインビューにはそれが含まれなくなり、2ピクセル下に拡大する必要があります。これは、背景ビューの移動が停止し、mainViewに最終的にbackgroundViewが含まれるまで発生します。
問題は、mainViewのサイズがまったく変更されていないことです。背景ビューが下がっていて、mainViewの下部から消えるまで見ることができます。mainViewのサイズは変更されているはずですが、どの方向にも変更されません。setFrameとsetBounds(setNeedsDisplayの有無にかかわらず)を使用してみましたが、何も機能しませんでした。
私は本当にメインビューのサイズをプログラムで変更する方法を探しています。