アプリの使用中に電話がかかってくると、上部に通話ステータス バー用のスペースを確保するために、ビューが少し下に移動します。
呼び出しが終了すると、ビューはこの「変更された」状態のままになります。アプリのサイズを強制的に変更するにはどうすればよいですか? 現在、アプリを強制終了して再起動する必要があります。
アプリの使用中に電話がかかってくると、上部に通話ステータス バー用のスペースを確保するために、ビューが少し下に移動します。
呼び出しが終了すると、ビューはこの「変更された」状態のままになります。アプリのサイズを強制的に変更するにはどうすればよいですか? 現在、アプリを強制終了して再起動する必要があります。
オーバーライドするカスタム ビューはあります-layoutSubviews
か?
私の経験では、これは、カスタム レイアウトを使用するが、適切なタイミングで-layoutSubviews
呼び出さないビューがあることを意味します。-setNeedsLayout:
一般に、フレームを設定してもレイアウトは強制されません(自動レイアウトは別の方法で処理されます)。
をオーバーライドする任意のビューで-layoutSubviews
、次のことを試してください。
-(void)setFrame:(CGRect)frame
{
CGRect oldFrame = self.frame;
// This check changes behaviour slightly:
// v.frame = v.frame;
// no longer cancels animations.
// Sometimes this works around an animation glitch.
if (!CGRectEqualToRect(frame,oldFrame))
{
[super setFrame:frame];
if (!CGSizeEqualToSize(frame.size,oldFrame.size))
{
// Only layout if the size changes.
[self setNeedsLayout];
}
}
}
( for に対しても同じことができますが、-setBounds:
AFAIK を除いて UIKit によって呼び出されないため、一般的には不要ですUIScrollView
。)