【发布时间】:2014-03-14 00:18:14
【问题描述】:
我得到了简单级别的框架/边界。仍在尝试升级到更高级的用途...
我有一个看起来像这样的视图堆栈:
UICollectionViewCell 实际上是我自己的子类。我已将其设置为selectionBackgroundView 为股票UIView,并在选择时切换hidden 属性。该容器视图包含一个或多个我自己的 MyAnnotationView 实例。他的目的是注释单元格。但他所做的大部分绘图实际上都是围绕单元格视图的bounds。
对于可能位于UICollectionView 中任意位置的单元格,他的frame 和bounds 将以正常方式不同(分别相对于父级和本地)。对于UIView 及其子视图(MyAnnotationView 实例),它们的框架和边界将是相同的,因为它们彼此重合。
但要让 MyAnnotationView 围绕他正在注释的单元格进行绘制,他需要了解单元格框架。 IOW,我希望它的 0,0 点与单元格的相同,但如果我可以参考他的框架并让它与单元格的值相同,我会喜欢它。是否可以以这种方式配置该视图的框架/边界?还是我必须进行硬编码搜索,例如
self.superview.superview.frame
红线是一个简单的例子,如果我新建注释视图的框架,我可以做些什么。我会从注释边界的左侧中间到框架的左侧 x 取反,并且 y 值相同。
也许这个问题的一个更通用的版本是,是否有一种(简单的)方法可以将注释视图的坐标系与 UICollectionView 的坐标系同步,但仍然要知道它正在注释的框的位置周围,在吗?
【问题讨论】:
-
你想在注释中画什么?为什么需要知道上面层次结构中的位置?为什么局部边界不够?
-
我有时会在边缘绘制连接。此外,还绘制了一些对等连接,一旦知道框架,就可以计算出这些连接。
-
但是不能在本地画出来吗?您能否在您的问题中添加此类注释的插图?
-
我同意 Leo 的观点。如果有外部视图需要适当绘制的信息,则应该告诉该信息。一个视图永远不应该对它之外的其他视图有任何了解。如果需要计算具体的坐标、角度等,cell可以进行计算。
-
@TravisGriggs 根据您的示例,您不应该从子视图甚至单元格内部绘制红线。