Table window 屏幕外的视图 iOS objective C

Table View out of the window screen iOS objective C

我在故事板中为我的文本字段设置了约束。我想使用以下代码在文本字段下创建一个 table 视图。设置类似于 textfield.frame.size.width 的宽度会使 tableView 一直超出屏幕,为什么?请帮忙。

-(void)cofigureAutoComTableView
{

    autocompleteTableView = [[UITableView alloc] initWithFrame:CGRectMake(self.txtActivity.frame.origin.x,self.txtActivity.frame.origin.y+32,self.txtActivity.frame.size.width, 200) style:UITableViewStylePlain];

    autocompleteTableView.delegate = self;
    autocompleteTableView.dataSource = self;
    autocompleteTableView.scrollEnabled = YES;
    //autocompleteTableView.
    autocompleteTableView.hidden = YES;
    [self.view addSubview:autocompleteTableView];

    CALayer *layer = autocompleteTableView.layer;
    [layer setMasksToBounds:YES];
    [layer setCornerRadius: 4.0];
    [layer setBorderWidth:1.0];
    [layer setBorderColor:[[UIColor blackColor] CGColor]];
}

看起来是因为当文本视图那么长时调用函数,所以在 viewDidAppear

中使用它
[self cofigureAutoComTableView];

你可以试试

 -(void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];

    if(once)
    {
        once = NO;

        [self conf];

   }

}

问题是 viewDidLoad 中的帧不是最终形式。只有在 viewDidAppear 中,帧才是最终的。

在这种情况下,最好的解决方案是更新 viewDidLayoutSubviews 中的 autocompleteTableView 的框架。

viewDidLayoutSubviews 在每次更新 viewController 的视图框架时被调用。

-(void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];

    autocompleteTableView.frame = CGRectMake(self.txtActivity.frame.origin.x,self.txtActivity.frame.origin.y+32,self.txtActivity.frame.size.width, 200);

}