У меня есть основной вид, который должен отображать несколько подпредставлений.Эти подпредставления расположены непосредственно над и под друг другом (по оси z) и будут опускаться (по оси y) и перемещаться вверх с использованием этого кода:
if (!CGRectIsNull(rectIntersection)) {
CGRect newFrame = CGRectOffset (rectIntersection, 0, -2);
[backgroundView setFrame:newFrame];
} else{
[viewsUpdater invalidate];
viewsUpdater = nil;
}
rectIntersection используется для определения того, когда представление имеетполностью переместился вниз и больше не находится позади передней (когда они больше не перекрываются, rectIntersection имеет значение null), он перемещается вниз на 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 пикселя.Это будет происходить до тех пор, пока фоновое представление не перестанет двигаться и основной вид наконец не будет содержать backgroundView.
Проблема в том, что mainView вообще не изменяет размеры.фоновое представление опускается, и я могу видеть его, пока оно не исчезнет из нижней части основного вида.mainView должен был изменить размер, но он не изменяется ни в каком направлении.Я пытался использовать setFrame и setBounds (с setNeedsDisplay и без него), но ничего не получалось.
Я просто ищу способ программно изменить размер основного вида.