我有一个视图,其中有行和列的图像视图.
如果调整此视图的大小,我需要重新排列图像视图位置.
此视图是调整大小的另一个视图的子视图.
有没有办法检测到此视图何时调整大小?
我有一个视图,其中有行和列的图像视图.
如果调整此视图的大小,我需要重新排列图像视图位置.
此视图是调整大小的另一个视图的子视图.
有没有办法检测到此视图何时调整大小?
正如Uli下面 comments 的那样,正确的方法是覆盖layoutSubviews
并在那里布局imageView.
如果出于某种原因,你不能对layoutSubviews
进行子类化和重写,那么观察bounds
应该是可行的,即使它有点脏.更糟糕的是,观察存在风险——苹果不保证KVO在UIKit类上工作.阅读与苹果工程师的讨论:When does an associated object get released?
original answer:个
您可以使用键值观察:
[yourView addObserver:self forKeyPath:@"bounds" options:0 context:nil];
并实施:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if (object == yourView && [keyPath isEqualToString:@"bounds"]) {
// do your stuff, or better schedule to run later using performSelector:withObject:afterDuration:
}
}