初学iOS开发者。
我所拥有的是一个UITableVIewController,它有1个部分,包含3个静态分组单元格。在那之下我有一个UIView,它有一些按钮和文本字段,当按下其中一个按钮时,UIView高度增加。我的问题是我无法向下滚动以查看UIView底部的内容
截图:
当按下绿色加号按钮时,这些元素向下移动,为插入一些新元素留出空间(我还没有实现,因为我遇到了这个问题)
修改
以下是一个示例项目:https://www.dropbox.com/s/vamxr12n6rrsam7/resizeSample.zip
答案 0 :(得分:3)
您的问题是在您的方法中更改发票。您只需更改invoiceBottomView
的约束,但不会更改invoiceBottomView的超级视图的大小,即invoicePickerViewsContainer
。因此,您的tableView不会知道您想要使用tableFooterView
(您的invoicePickerViewsContainer
)的更多空间。
您可以为此更改代码:
- (IBAction)invoiceLinesAddLine:(id)sender {
[UIView animateWithDuration:.25 animations:^{
CGRect invoiceBottomViewFrame = self.invoiceBottomView.frame;
NSInteger invoiceBottomViewFrameHeight = invoiceBottomViewFrame.size.height;
NSInteger invoiceLinesTopConstraintValue = invoiceLinesControlsViewTopConstraint.constant;
NSInteger invoiceLinesBottomConstraintValue = invoiceLinesControlsViewBottomConstraint.constant;
invoiceBottomViewFrameHeight = invoiceBottomViewFrameHeight + 40;
invoiceLinesTopConstraintValue = invoiceLinesTopConstraintValue + 40;
//invoiceLinesBottomConstraintValue = invoiceLinesBottomConstraintValue - 40;
invoiceBottomViewFrame.size.height = invoiceBottomViewFrameHeight;
invoiceLinesControlsViewTopConstraint.constant = invoiceLinesTopConstraintValue;
invoiceLinesControlsViewBottomConstraint.constant = invoiceLinesBottomConstraintValue;
CGRect invoicePickerViewsContainerFrame = self.invoicePickerViewsContainer.frame;
invoicePickerViewsContainerFrame.size.height += 40;
self.invoicePickerViewsContainer.frame = invoicePickerViewsContainerFrame;
self.tableView.tableFooterView = self.invoicePickerViewsContainer;
[self.view layoutIfNeeded];
} completion:^ (BOOL finished){
if (finished) {
//actions when animation is finished
}
}];
}
您无需更改invoiceLinesBottomConstraintValue
,因为您将增加invoicePickerViewsContainer的高度。
然后你需要再次添加tableFooterView
,这样表视图就会知道大小的变化,而表格会改变contentSize
现在,你有拣货员的问题......但我不明白为什么你在这个视图中有拣货员。如果要在该视图中保留这些选择器,则需要更改这些选择器或其框架的约束。
答案 1 :(得分:1)
设置 - (IBAction)invoiceLinesAddLine:(id)sender {}的方式以及tableview中的视图在添加更多项目时不会更新self.tableView.contentsize。所以将这些行添加到invoiceLinesAddLines中动画功能的完成功能,然后将增量高度添加两倍(我随意挑选80)
completion:^ (BOOL finished){
if (finished) {
//actions when animation is finished
CGSize size=self.tableView.contentSize;
size.height+=80;
self.tableView.contentSize=size;
}
}];