2013-03-07 26 views
1

如果我在使用我的应用程序时收到电话,视图会稍微有些缓冲,以便为顶部的呼叫状态栏留出空间。通过电话呼叫后iOS应用程序布局发生变化

呼叫结束后,视图保持这种“改变”状态。我该如何强制应用重新调整自己的尺寸?目前我必须杀死该应用并重新启动。

+0

你可以展示它的镜头吗? – Yashesh 2013-03-07 05:22:24

回答

2

你有任何自定义视图覆盖-layoutSubviews

根据我的经验,这意味着您有一个视图,使用-layoutSubviews进行自定义布局,但在适当的时候不会调用-setNeedsLayout:;一般setting the frame does not force a layout(自动布局处理方式不同)。

在重写-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:做相同的,但它通常是不必要的,因为据我所知它不会通过UIKit的呼吁,除了UIScrollView

相关问题