iOS - UITableViews正在调整它们的大小

时间:2015-02-24 17:10:31

标签: ios objective-c uitableview ecslidingviewcontroller

我正在使用ECSlidingViewController。当我加载我的视图时,一切都显示完美。当我在加载视图后第一次滑出菜单时,我视图中的两个表会改变它们的高度。由于某种原因,顶部表格得到一个额外的(空白)行,而底部表格变小了。

据我所知,当我将菜单滑出时,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和SingleTable。
  2. SingleTable,惊喜,只有一个表,而DoubleTable有两个。
  3. SingleTable没有我上面描述的问题。
  4. DoubleTable中的表在viewDidAppear中以编程方式调整大小。 SingleTable中的表格没有以编程方式调整大小。
  5. 在我滑动菜单时,更改DoubleTable中的故事板似乎不会影响表的调整大小。
  6. 相反,似乎程序化调整大小正在消失,好像它在我打开幻灯片菜单时从未发生过。
  7. 以下是我在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 个答案:

答案 0 :(得分:0)

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