如何通过一个图层创建一个窗口到另一个图层

时间:2013-02-11 21:37:55

标签: ios xcode image window layer

我正在寻找一些方向来帮助在我的应用中实现特定功能。

这有点难以解释,但这里有。虽然我使用多层隐喻(一种Photoshop)可视化我的目标,但这只是为了解释我的愿景 - 我意识到这在实践中可能并不合理。

我设想了3个“层”

  1. 包含图片的底层
  2. 顶部的另一层 - 比如50%的灰色 - 但是不透明度降低,因此原始图层仍然可见但不再强调。
  3. 然后在顶层上有两个方形物体,每个物体作为穿过灰色层的“窗口”,一直到原始层,所以 - 通过这些窗口,您可以看到原始图像的一部分 完全不透明。
  4. 最后,需要能够用手指在屏幕上拖动每个窗口,以便独立地重新定位每个窗口。

    如果每个窗口都可以调整大小(不是形状 - 仍然是正方形),理想情况下可以使用某种手指姿势来获得额外的功劳。

    我不是在找代码(虽然我不反对)。我正在寻找一种在Objective-C中实现这一目标的方法,理想情况下我不需要深入研究某些图形框架等高级主题。

    谢谢! 贝。

2 个答案:

答案 0 :(得分:1)

我会重新安排它。相反,有一个背景图像的平面图像,底部印有50%的灰色。然后,您拥有的两个正方形实际上是UIImageViews,背景图像设置为固定位置,图像视图将该图像剪切到其边界。当您移动两个图像视图时,您只需翻译图像的原点。

抱歉,这很难解释我的想法。我应该试着把它画出来。

答案 1 :(得分:0)

以下是我想尝试的概述。

我会使用2个视图(不是图层)。最底部的视图是图像视图。

顶视图是自定义视图。此自定义视图将有两个其他视图作为子视图。这两个子视图将代表两个“漏洞”。使用自己的手势识别器设置两个子视图以处理平移和缩放。为两个子视图(和容器视图)提供清晰的背景和可能的边框。此自定义视图的主视图需要实现其drawRect:方法。实现将绘制部分透明的灰色背景。在绘制灰色之前,它将使用两个子视图的位置和大小来设置剪切区域。

每次调整或移动2个子视图时,您需要在容器视图上调用setNeedsDisplay,以便调用drawRect:方法刷新带有孔的灰色背景。