Step1: переопределить setFrame, чтобы ничего не делать.
- (void)setFrame:(CGRect)newRect
{
}
Шаг 2. Переместите настройку полустатического фрейма в переопределенную версию willMoveToSuperview:
, чтобы получить действительную ссылку на супервизор.
- (void)willMoveToSuperview:(UIView *)newSuperview
{
CGRect newFrame = newSuperview.frame;
//manipulate the frame here
[super setFrame:newFrame];
}