1

如果我在使用我的应用程序时接到电话,视图会向下一点,以便为顶部的呼叫状态栏腾出空间。

通话结束后,视图将保持这种“已更改”状态。如何强制应用程序自行调整大小?目前我必须终止应用程序并重新启动。

4

1 回答 1

2

你有任何覆盖的自定义视图-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.)

于 2013-03-07T06:06:27.317 回答