如果我在使用我的应用程序时接到电话,视图会向下一点,以便为顶部的呼叫状态栏腾出空间。
通话结束后,视图将保持这种“已更改”状态。如何强制应用程序自行调整大小?目前我必须终止应用程序并重新启动。
如果我在使用我的应用程序时接到电话,视图会向下一点,以便为顶部的呼叫状态栏腾出空间。
通话结束后,视图将保持这种“已更改”状态。如何强制应用程序自行调整大小?目前我必须终止应用程序并重新启动。
你有任何覆盖的自定义视图-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];
}
}
}
(你可以做同样的事情,-setBounds:
但它通常是不必要的,因为 AFAIK 它不会被 UIKit 调用,除了UIScrollView
.)