Table View 窗外屏幕 iOS Objective C
Posted
技术标签:
【中文标题】Table View 窗外屏幕 iOS Objective C【英文标题】:Table View out of the window screen iOS objective C 【发布时间】:2018-03-19 09:45:33 【问题描述】:我在故事板中为我的文本字段设置了约束。我想使用以下代码在文本字段下创建一个表格视图。设置类似于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]];
【问题讨论】:
【参考方案1】:看起来因为你在 textview 这么长时调用函数,所以在 viewDidAppear
中使用它
[self cofigureAutoComTableView];
【讨论】:
为什么会这样?不太明白。在我在 viewDidAppear 而不是 viewDidLoad 调用它之后。它有效。 @HansheungCheah 在viewDidAppear
中所有布局都已设置。它也适用于viewDidLayoutSubviews
。
因为调用 viewDidAppear 时视图已完全加载。当您在 viewDidLoad 中放置相同的代码时,它会从情节提要中拾取帧,而您已经意识到,它们比屏幕尺寸大得多。【参考方案2】:
你可以试试
-(void)viewDidLayoutSubviews
[super viewDidLayoutSubviews];
if(once)
once = NO;
[self conf];
【讨论】:
【参考方案3】:问题在于 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 View 窗外屏幕 iOS Objective C的主要内容,如果未能解决你的问题,请参考以下文章
Table View Programming Guide for iOS 官方文档翻译
Table View Programming Guide for iOS 官方文档翻译
将数据从 Table View Cell 传递到 IOS 中的 View Controller
iOS UITableView tableHeaderView 高度变了