Как собака с костью, я понял это ....
Вместо анимации высоты рамки, я применил преобразование к виду и установил опорную точку слоя.
//set the anchor point to the bottom of the view
[self setAnchorPoint:CGPointMake(0.5, 1.0) forView:hostView];
//Scale the height to close to zero
hostView.transform = CGAffineTransformMakeScale(1, 0.00001);
Если я укажу 0 в качестве шкалы y, вид будет вести себя странно ... в конце анимации я просто установил его скрытым.
На обратном пути я просто используюIdentity Transform (сбросьте его)
hostView.transform = CGAffineTransformIdentity;
Обратите внимание, что изменение точки привязки сместило положение моего обзора.См. Этот пост для метода setAnchorPoint, который нормализует представление после установки anchorPoint
Изменение anchorPoint моего CALayer перемещает представление