IOS 当我使用自动布局约束更新其框架高度时,UITableView 框架更改操作未触发

IOS UITableView frame change action not firing when I use auto layout constraint to update its frame height

我正在做一些关于聊天室的事情;我使用 uitableview 来显示聊天记录,并使用 uiview 作为文本输入和表情符号的容器。 uitableview 对文本输入和表情符号视图的底部约束为 0;当我扩展文本输入和表情符号视图的高度约束时,uitableview 的框架会更新,但代码中不会触发更改操作。

我尝试了以下代码来观察变化,但它不起作用。

-(void)didChangeValueForKey:(NSString *)key
-(void)willChangeValueForKey:(NSString *)key
[_tableView.layer addObserver:self forKeyPath:@"frame" options:NSKeyValueObservingOptionNew context:nil\];

我也试过一次跟踪本机属性的变化。但我认为只有当通过 setter 方法 设置属性 时才会触发此观察者。喜欢,

self.myProperty = newValue;

如果你使用,

_myProperty = newValue;

您的观察者不会在键值观察中得到任何变化。

对于 tableView 这样的原生元素,我们不知道内部实现。要跟踪更改,您必须自定义 tableView.