可视化UIImageView的锚点

时间:2013-07-16 08:17:03

标签: objective-c cocoa-touch uiimageview

是否有一种简单的方法可以在UIImageView的锚点上放置标记(例如十字形)?我试图通过他们的锚点排列几个旋转图像,并且能够看到这些点将使工作变得更容易。

非常感谢。

1 个答案:

答案 0 :(得分:8)

您正在询问如何在视图中可视化锚点,但在我看来,您要求它以便您可以帮助对齐锚点。我会尝试回答这两个问题。

可视化锚点。

iOS上的每个视图都有一个具有锚点的底层。锚点位于图层的单位坐标空间中(x和y从0到1)。这意味着您可以将x乘以宽度,将y乘以高度,以获得视图/图层坐标空间中图层内锚点的位置。然后,您可以在其中放置子视图/子图层以显示锚点的位置。

在代码中,您可以执行以下操作,以显示锚点所在的小黑点。

CALayer *anchorPointLayer = [CALayer layer];
anchorPointLayer.backgroundColor = [UIColor blackColor].CGColor;
anchorPointLayer.bounds = CGRectMake(0, 0, 6, 6);
anchorPointLayer.cornerRadius = 3;

CGPoint anchor = viewWithVisibleAnchorPoint.layer.anchorPoint;
CGSize  size   = viewWithVisibleAnchorPoint.layer.bounds.size;

anchorPointLayer.position = CGPointMake(anchor.x * size.width,
                                        anchor.y * size.height);
[viewWithVisibleAnchorPoint.layer addSublayer:anchorPointLayer];

您可以在下面的图像中看到四种不同旋转的结果。

View rotated around anchor point

按照锚点

对齐图层

这很酷,但实际上比对齐锚点更容易。

关键技巧是positionanchorPoint 始终相同的点,仅在两个不同的坐标空间中。位置在超级图层的坐标空间中指定。锚点在图层的单位坐标空间中指定。

关于这一点的好处是,position属性对齐的视图会自动将anchorPoint对齐。请注意,内容是相对于锚点绘制的。下面是一组视图的示例,这些视图都具有与position相同的y分量,因此它们在y中对齐。

没有任何特殊代码可以执行此操作。只需确保position属性已对齐。

Multiple views aligned by their anchor point.