我有一个视图,其中有行和列的图像视图.

如果调整此视图的大小,我需要重新排列图像视图位置.

此视图是调整大小的另一个视图的子视图.

有没有办法检测到此视图何时调整大小?

推荐答案

正如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:
    }
}

Ios相关问答推荐

缺少预期的键:';NSPrival yCollectedDataTypes';

设置堆栈视图的所有属性

如何在SwiftUI中以一定Angular 绘制直线(&A)

如何使用超薄material ,但没有浅色/填充?

如何在iOS中以编程方式推送另一个页面?

检测touch 并忽略其他手势SWIFT SceneKit

Xcode -Google Mobile Ads SDK在没有AppMeasurement的情况下初始化

当文本为空时,具有垂直轴的SwiftUI文本字段不会与FirstTextBaseline对齐

如何在 Swift 中存储具有关联值的协议?

在 React Native iOS 中加载多个 JS 包

CGPath intersection(_:using:) 和朋友(iOS 16 中的新功能)坏了?

转换在 NavigationView 中不起作用

iOS 中的 [Class new] 和 [[Class alloc] init] 有什么区别?

在设备上卸载 ios 应用程序后如何在 ios 中保留 identifierForVendor?

警告:iPad:Icon-72.png:图标尺寸(0 x 0)

ARKit vs. ARCore vs. Vuforia vs. D'Fusion Mobile vs. Layar SDK

如何用 Swift 圆化 UILabel 的边缘

如果我的分发证书过期会怎样?

如何为 NSDate 添加一个月?

zoom UIButton 动画 - Swift