iOS - UITableViews正在调整大小,当它们不应该

问题描述:

我正在与ECSlidingViewController一起工作。当我加载我的视图时,所有内容都完美显示。加载视图后,当我第一次滑出菜单时,视图中的两个表格会改变它们的高度。顶部表格由于某种原因会获得额外(空白)行,并且底部表格会变小。iOS - UITableViews正在调整大小,当它们不应该

据我所知,当我滑出菜单时,MenuViewController.m或加载主视图的DoubleTable.m中都没有代码。

我或者需要防止发生这种调整大小,或者我需要能够在不需要的调整大小生效后纠正它。

这里是我的viewDidLoad中下附的菜单代码:

self.view.layer.shadowOpacity = 0.75f; 
self.view.layer.shadowRadius = 10.0f; 
self.view.layer.shadowColor = [UIColor blackColor].CGColor; 


if(![self.slidingViewController.underLeftViewController isKindOfClass:[MenuViewController class]]) { 
    self.slidingViewController.underLeftViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Menu"]; 
} 


[self.view addGestureRecognizer:self.slidingViewController.panGesture]; 

有些信息可能被证明在揭示问题的有用:

  1. 我有一个表,DoubleTable和单表两种观点。
  2. SingleTable,惊喜,只有一张桌子,而DoubleTable有两个。
  3. SingleTable没有我上面描述的问题。
  4. DoubleTable中的表以编程方式在viewDidAppear中调整大小。 SingleTable中的表格没有以编程方式调整大小。
  5. 在DoubleTable中更改故事板时,似乎不会影响我在滑动菜单时调整表的大小。
  6. 相反,看起来好像当我打开幻灯片菜单时,程序调整大小就像是从未发生过一样。

这里是我如何调整表中DoubleTable.m:

-(void)viewDidAppear:(BOOL)animated{ 
    CGRect frame = table1.frame; 
    CGRect Rect= [[UIScreen mainScreen] bounds]; 

    frame.size.height = table1.contentSize.height; 
    table1.frame = frame; 
    int table2Height = Rect.size.height - 150 - table1.frame.size.height; 
    table2.frame = CGRectMake(table2.frame.origin.x, table1.frame.origin.y + 30 + table1.frame.size.height, table2.frame.size.width, table2Height); 
} 

如果有任何更多的代码,任何人都觉得我应该张贴,请随时提出。

+1

您可能需要在viewDidAppear中进行布局。也许在'layoutSubviews'?如果在故事板上有自动布局,那么它会为您添加约束条件,导致布局发生时它会回弹。您也可以尝试关闭此功能,但必须确保您没有任何限制或重新开启。 – 2015-02-24 17:30:57

+0

@RoryMcKinnel谢谢,关闭自动布局将其完全修复。请在下面添加您的答案,以便我可以给您信用。 – 2015-02-24 18:05:02

+0

欢迎。发布为答案。 – 2015-02-24 18:12:13

您可能需要在viewDidAppear中进行布局。也许在layoutSubviews?如果在故事板上有自动布局,那么它会为您添加约束条件,导致布局发生时它会回弹。您也可以尝试关闭此功能,但必须确保您没有任何限制或重新开启。

+0

谢谢,我没有选中文件检查器中的自动布局,问题消失了! – 2015-02-24 18:13:12