【问题标题】:iPhone SDK: disabling cllipping for UIScrollViewiPhone SDK:禁用 UIScrollView 的剪辑
【发布时间】:2009-02-27 05:48:53
【问题描述】:

我正在开发一款 iPhone 游戏,并尝试使用 UIScrollView 来显示一些图标,然后我希望用户能够将这些图标从正在滚动的栏上拖到另一个视图上(基本上,将它们从手中拖出在游戏板上玩)。问题是 UIScrollView 剪辑了它自己边界之外的所有内容。

这是我正在尝试做的图片:

从功能上讲,它确实有效,因为您可以将图标拖动到白板上很好...但是您在拖动时看不到它们...这是不可接受的。

有谁知道您是否可以暂时禁用滚动视图所做的剪辑,或者有什么办法可以绕过它?哈克与否,我真的很想实现它。

有没有人对此有任何其他可能的解决方案?或者也许有任何替代方法?我考虑过页面视图是否可行,但还没有尝试过……而且它根本不如滚动视图好。

在最坏的情况下,我可以回到没有滚动条的状态,但这确实对我的一些游戏机制造成了阻碍,我对此真的不太兴奋。

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    我认为您正在寻找 UIView 的 clipsToBounds 属性。我已经成功地将它与 UIScrollView 一起使用:

    scrollView.clipsToBounds = NO;
    

    但是,您想要从滚动视图拖动到游戏视图可能需要您从滚动视图中移除图标视图,将其放置在超级视图中与其在滚动视图中的可见位置相对应的位置(使用滚动视图的原点和内容偏移量计算),并跟踪用户的手指移动。在释放触摸时,将其放在游戏视图的适当位置或返回到滚动视图。

    【讨论】:

    • 太棒了,我一直在寻找这样的房产,但我一生都找不到。是的,这正是我已经在做的事情(从一个视图中删除图标视图,然后在板上的正确位置重新创建新的视图)。
    • 布拉德,这非常适合拖动部分,谢谢!我的新问题是,我可以在不裁剪图标视图的情况下裁剪条形视图(不是图标可拖动视图,而是作为 UIScrollView 的子视图的容器视图)。我想我不能同时拥有它,但想尝试一下。 =)
    • 虽然您可以将滚动视图的 clipsToBounds 设置为 NO,然后将容器 UIView 的 YES 设置为.如果您只是在谈论图标上方的栏,那么您会很好。
    • 我想我只能忍受它而不是剪辑,老实说这可能是最好的用户体验。我只是想知道我所有的选择,而我有开放的问题和知识渊博的人来回答。谢谢!
    【解决方案2】:

    我不是 100% 确定我理解了这个问题,但我认为您应该查看滚动视图和白板的 z 顺序。可能是拖到了白板后面。

    否则,查看视图层次结构的所有边界会很有用。

    我还认为一个更好的解决方案可能是创建一个“精灵”以在玩家手指下方进行动画处理 - 您可以从触摸位置偏移精灵的绘制点,以便玩家可以看到他们正在拖动什么。

    【讨论】:

    • 关于 z 顺序的好建议,我研究了一下,但事实并非如此。子视图在各个方向都被剪裁,即使后面没有其他视图。精灵的想法是我简要考虑过的,如果其他建议不起作用,我想我会这样做。
    猜你喜欢
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 2012-04-18
    • 2014-10-15
    相关资源
    最近更新 更多