当 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
,它是一个可访问性容器。它所容纳的每个UIAccessibilityElement
s 都有一个相对于窗口的框架。因为框架是相对于窗口的,所以只要窗口中视图的位置发生变化,就需要更新它。
有没有办法在窗口中视图的位置发生变化时得到通知?这将允许我保留此类中的所有代码,既美观又可重用,而不是在整个视图层次结构中蔓延。
【问题讨论】:
不确定我是否正确理解了这个问题,但你可以用任何视图框架做 KVO 的东西。 [view1 addObserver:self forKeyPath:@"frame" options:NSKeyValueObservingOptionNew context:NULL]; 对,你可以监控框架,但如果是超级视图的框架变化,那将无法捕捉到视图在屏幕上的位置变化。 【参考方案1】:这里Introduction to Key-Value Observing Programming Guide
KVO 可以监控 UIView 的帧变化。
【讨论】:
您可以使用 KVO 来监视框架,但是如果它的父视图的框架发生变化,那将无法捕捉到视图在屏幕上的位置变化。以上是关于当 UIView 在窗口中的位置发生变化时是不是有通知?的主要内容,如果未能解决你的问题,请参考以下文章
滚动后 UITableViewCell 内的 UIView 中的渐变发生了变化
当superView frameWidth 发生变化时,UIView 不会自动调整大小
当 Extjs 中的窗口大小发生变化时如何显示“分页工具栏”?