[英]Resize UITableView when I slide up a UIView, just like how it happens when the keyboard is shown
我正在滑动一个UIView
,其中有一个UIDatePicker
作为子视图。 这是添加到我的UITableView
之上的,但是不幸的是,一些tableView行仍然在我的UIView
。
UITableView用键盘向上推:
UITableView没有被我的视图推高,涵盖了最后几个字段:
当我向上滑动视图时,是否可以动态调整UITableView
大小,就像在tableView
显示键盘并且仍然可以看到所有行时一样?
编辑:
刚刚找到了一个很棒的Apple示例: http : //developer.apple.com/library/ios/#samplecode/DateCell/Introduction/Intro.html
对的,这是可能的。 您可以继续进行操作,并作为向上滑动视图的动画的一部分来动态更改UITableView的大小。 如果要执行UITableView实际响应键盘的操作,请不要更改其大小,而是更改其内容插图和滚动指示器插图。 请在此处查看我的答案以及链接到的示例:
好吧,这比我想象的要容易。 就我而言,当我触摸一行时,我希望选择器显示,并且tableView
更改其高度,所以我使用:
[UIView animateWithDuration:0.4 delay:0.0 options: UIViewAnimationCurveEaseOut animations:^{
self.pickerView.frame = CGRectMake(0, self.view.bounds.size.height-200, self.view.bounds.size.width, self.pickerView.frame.size.height);
// shrink the table vertical size to make room for the date picker
CGRect newFrame = self.tableView.frame;
newFrame.size.height -= self.pickerView.frame.size.height;
self.tableView.frame = newFrame;
} completion:nil];
然后,当我单击完成按钮,并想将tableView
返回到全高并隐藏我的datePicker时,我使用:
- (void)doneWithPicker:(BOOL)remove {
CGRect newFrame = self.tableView.frame;
newFrame.size.height += self.pickerView.frame.size.height;
self.tableView.frame = newFrame;
[UIView animateWithDuration:0.4 delay:0.0 options: UIViewAnimationCurveEaseOut animations:^{
self.pickerView.frame = CGRectMake(0, self.view.bounds.size.height+300, self.view.bounds.size.width, self.pickerView.frame.size.height);
} completion:^(BOOL finished){
if (remove) {
[self.pickerView removeFromSuperview];
self.pickerView = nil;
}
}];
}
另外,在将pickerView
添加为子视图时,请确保将其添加到window
:
[self.view.window addSubview:self.pickerView];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.