UITableView/UIScrollView 如何自动知道 ContentSize 何时发生变化?
Posted
技术标签:
【中文标题】UITableView/UIScrollView 如何自动知道 ContentSize 何时发生变化?【英文标题】:UITableView/UIScrollView how to automatically know when ContentSize changes? 【发布时间】:2012-07-02 21:17:02 【问题描述】:是否有一种自动方式来了解 UITableView/UIScrollView 中的 ContentSize 变化?
【问题讨论】:
什么需要注意内容大小的变化? “UITableView
”和“UIScrollView
”对象本身,或者包含它们的东西,还是其他东西?
【参考方案1】:
答案其实很简单,使用KVO(Key Value Observing);
- (id)initWithFrame:(CGRect)frame tableView:(UITableView *)tableView
// ....
[self.tableView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld | NSKeyValueObservingOptionPrior context:NULL];
// ....
- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
if ([keyPath isEqualToString:@"contentSize"])
// Do something
不过我还不确定这些标志。
【讨论】:
也记得-removeObserver:forKeyPath:context:
我通常把-removeObserver:forKeyPath:context:
放在-dealloc
方法中。【参考方案2】:
对于那些不喜欢 KVO 的人:
- (void)setContentSize:(CGSize)contentSize
[super setContentSize:contentSize];
// Do something.
是的,只需使用super
访问父方法。这假设你继承 UIScrollview/TableView/CollectionView
【讨论】:
更好的答案。以上是关于UITableView/UIScrollView 如何自动知道 ContentSize 何时发生变化?的主要内容,如果未能解决你的问题,请参考以下文章
UIView、UICollectionView、UITableView、UIScrollView 的边界属性理解混乱
Swift实现修改UITableView,UIScrollView滚动条颜色
如何捕获 UITableView / UIScrollView 的完整内容的 UIImage 并使其在 ios 设备上工作