当 UIView 在窗口中的位置发生变化时是不是有通知?

Posted

技术标签:

【中文标题】当 UIView 在窗口中的位置发生变化时是不是有通知?【英文标题】:Is there a notification for when a UIView's position in the window changes?当 UIView 在窗口中的位置发生变化时是否有通知? 【发布时间】:2012-12-12 01:40:08 【问题描述】:

我有一个自定义的UIView,它是一个可访问性容器。它所容纳的每个UIAccessibilityElements 都有一个相对于窗口的框架。因为框架是相对于窗口的,所以只要窗口中视图的位置发生变化,就需要更新它。

有没有办法在窗口中视图的位置发生变化时得到通知?这将允许我保留此类中的所有代码,既美观又可重用,而不是在整个视图层次结构中蔓延。

【问题讨论】:

不确定我是否正确理解了这个问题,但你可以用任何视图框架做 KVO 的东西。 [view1 addObserver:self forKeyPath:@"frame" options:NSKeyValueObservingOptionNew context:NULL]; 对,你可以监控框架,但如果是超级视图的框架变化,那将无法捕捉到视图在屏幕上的位置变化。 【参考方案1】:

这里Introduction to Key-Value Observing Programming Guide

KVO 可以监控 UIView 的帧变化。

【讨论】:

您可以使用 KVO 来监视框架,但是如果它的父视图的框架发生变化,那将无法捕捉到视图在屏幕上的位置变化。

以上是关于当 UIView 在窗口中的位置发生变化时是不是有通知?的主要内容,如果未能解决你的问题,请参考以下文章

滚动后 UITableViewCell 内的 UIView 中的渐变发生了变化

旋转 UIView 导致它改变位置

当superView frameWidth 发生变化时,UIView 不会自动调整大小

当 Extjs 中的窗口大小发生变化时如何显示“分页工具栏”?

当 ipad 中的方向发生两次变化时,UIScrollView 的位置会发生变化

使用捏合手势时,uiview 的边界是不是会发生变化?