【问题标题】:Moving a UIIMageView outside of a UIScrollView将 UIIMageView 移到 UIScrollView 之外
【发布时间】:2010-06-06 06:33:53
【问题描述】:

在我的主 UIView 的底部,我有一个 UIScrollView,里面有一个 UIImageView。

我想将 UIImageView 从 UIScrollView 移动到 UIView 的顶部。

我可以将我的 UIImageView 移动到 UIScrollView 内部,但不能在外部移动。 UIImageView 保留在 UIScrollView 中,它是父级。

有什么想法吗?

提前感谢您的帮助。

最好的问候,

阿尔克斯

【问题讨论】:

    标签: iphone ipad


    【解决方案1】:

    不要被 UI 的类比所迷惑。这些视图实际上并不是可以轻松拾取并从一个位置移动到另一个位置的物理对象。我们使用与幻觉的明显运动无关的代码来创建物理对象的幻觉。

    做你想做的事需要一些工作。

    视图仅在其超级视图中绘制自己。它的框架由它在超级视图中的位置定义。一旦框架被定义为在超级视图之外,它就不再绘制自己并且从 UI 中消失。这就是为什么你不能将 UIImage 拖到任何你想要的地方。

    您需要做的是创建一个覆盖滚动视图和目标视图的透明概览。当用户启动拖动时,您必须从滚动视图中删除 UIImageView 并将其添加到概览中(或者,隐藏滚动视图 UIImageView 并在概览中创建副本)。然后 UIImage 将在概览中绘制自己,这将产生它被拖出滚动视图的错觉。然后你在目标视图上反转占有。

    您可能希望至少为 iPhone 重新考虑您的设计。用户很难在小屏幕上拖动项目,尤其是当他们的屏幕本身必须滚动时。

    【讨论】:

      【解决方案2】:

      据我了解,您在代码中添加 UIImageView 作为 UIScrollView 的子视图,但后来无法进行反向操作。

      如果是这样,在你的 UIViewController 中使用类似的东西:

      [yourImageView removeFromSuperview];
      [self.view addSubview:yourImageView];
      

      如果没有,请在您的问题中添加更多详细信息...

      【讨论】:

      • 问题是我想将我的 UIImageView 从 UIScrollView 拖到我的主 UIView。因此,正如您所说,我必须将其从 UIScrollView 中删除,然后将其添加到主视图中。我在 TouchesBegan 方法中这样做。但这还不够。因为当我拖动图像时,在 TouchesMoved 方法中,我正在做我认为应该做的事情来移动图像,但移动是对滚动视图的约束。我无法理解要将图像移动到主视图中需要做什么。图像保留在滚动视图中。
      • 嗯...您的 UIImageView 不只是在 UIScrollView 上(因为它是子视图) - 它是滚动视图 contentView 的子视图。这就是为什么,我认为,你不能将图像从滚动视图中移出。我可以建议的唯一解决方案是这样的:在 touchesBegan 上将图像作为主视图的子视图(从滚动视图中删除)并继续使用主视图进行 touchesMoved。
      猜你喜欢
      • 2015-06-29
      • 1970-01-01
      • 2017-08-16
      • 1970-01-01
      • 2014-08-20
      • 1970-01-01
      • 1970-01-01
      • 2013-08-11
      • 2011-08-10
      相关资源
      最近更新 更多