Я просто столкнулся с той же проблемой, и решение оказалось на удивление легким. В то время как изменение размера кадра влияет только на текущий вид, а не на подпредставления (как вы заметили), свойство transform также применяется к подпредставлениям.
Я пытаюсь сделать то, что вы делаете, в обратном направлении (иметь подпредставление, которое при отображении «падает» в верхнюю часть существующего вида, а не масштабируется от центра). Этот код работает для меня:
self.transform = CGAffineTransformMakeScale(2,2);
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.25];
self.transform = CGAffineTransformMakeScale(1,1);
self.alpha = 1.0;
[UIView commitAnimations];
Попробуйте установить self.transform в CGAffineTransformMakeScale (0,0) перед началом анимации и установите его обратно в (1,1) перед фиксацией. Ни в коем случае не изменяйте фрейм - оставьте его в том размере, который вы хотите видеть после завершения анимации.