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);
}
我在故事板中为我的文本字段设置了约束。我想使用以下代码在文本字段下创建一个 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);
}