2013-02-11 74 views
0

我正在寻找一些方向来帮助实现我的应用程序的特定功能。如何创建一个窗口通过一层到另一层

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

我设想3“层”

  1. 包含图像
  2. 顶部另一层底部层 - 说50%的灰色 - 但在降低的不透明度,从而原始层仍是可见的,但解-强调。
  3. 然后在顶层上的两个方形物体,每个物体充当通过灰色层的“窗口”,直到原始图层等等 - 通过这些窗口,您可以看到部分原始图像在 完全不透明度。

最后,需要能够用手指拖动屏幕上的每个窗口,以独立地重新定位每个窗口。

如果每个窗口都可以在尺寸上进行调整(不是形状 - 仍然是方形),而是使用某种手指手势进行理想的额外功劳。

我不是在寻找代码(虽然我不会反对)。我正在寻找一种在Objective-C中执行此操作的方法,它理想地不需要我深入研究高级主题,例如某些图形框架。

谢谢! Tony。

回答

0

下面是我会尝试的一个粗略概述。

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

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

每次调整大小或移动2个子视图时,您都需要在容器视图上调用setNeedsDisplay,因此将调用drawRect:方法来刷新具有孔的灰色背景。

+0

@ rmaddy-谢谢。 在故事板中,我有一个包含2个子视图的UIImageView。 我一次开始一个,我已经使Subview1成为一个UIGestureRecognizerDelegate,并添加了一个带有关联选择器的平移手势识别器。不过,我想我习惯于在UIViewController级别工作,其中像viewDidLoad这样的实例方法允许我添加手势设置代码。在子视图中,我默认的所有内容都是initWithFrame,但这不是触发。我发现initWithCoder - *被*触发,但是将手势代码放在那里会导致未捕获的异常。 任何指导赞赏。 – Tony 2013-02-18 19:40:35

+0

好的,我有两个子视图对手势做出响应。现在我坚持如何在Container视图的drawRect:方法中创建剪切区域。任何指导欣赏。仅供参考,我的视图层次结构包括:UIViewController包含UIView包含背景图像UIImageView加容器UIView包含SubView1和Subview 2 UIImageViews。 – Tony 2013-02-20 06:02:24

+0

终于在玩过很多游戏后才开始工作。最终使用您的方法maddy的元素。感谢@Bergasms的建议。 – Tony 2013-02-24 03:41:23

1

我会重新排列它。取而代之的是,背景图像的平面图像在底部印有50%的灰色。然后,你有两个正方形,实际上是UIImageViews,背景图像设置为一个固定的位置,图像将视图剪辑到其边界。随着您移动两个图像浏览,您只需翻译图像的来源。

对不起,这是很难解释我在想什么。我应该尝试绘制出来。

+0

嗨Bergasms - 感谢您的建议。我对其他建议没有太大的好运,因此,如果您能够对您的问题进一步阐述,将不胜感激。 – Tony 2013-02-20 05:56:53

+0

当然,生病放在一起,希望能帮助你。 – Bergasms 2013-02-20 06:30:59

+0

嗨,Bergasms。对不起,错误。运气好的话? – Tony 2013-02-23 06:30:52

相关问题