【问题标题】:UIScrollView with tiles with negative origin带有负原点的 UIScrollView
【发布时间】:2011-01-04 04:44:30
【问题描述】:

我有一个在屏幕上移动的点。当它超出滚动视图的边界时,会创建一个新的图块,点可以移动到该图块上,并且滚动视图的大小会增加。我通过以下方式跟踪:

scrollViewBounds = CGRectUnion(newTileBounds, scrollViewBounds);
[scrollView setContentSize:scrollViewBounds.size];

只要新图块具有非负原点,它就可以正常工作。如果新创建的图块位于左边界并且具有负原点,则边界大小将在右侧进行补偿。我知道 setContentSize 只说视图有多大,而不是它的位置。

所以我尝试使用 setContentOffset,它似乎工作不稳定,但如果我滚动,它会跳回正区域,你不能再滚动到负区域。

如何让负原点的图块可见?

【问题讨论】:

    标签: uiscrollview tiles offset


    【解决方案1】:

    您可以从内容视图的中间开始,并将 contentSize 设置为可能的最大尺寸。这样就不需要动态调整内容大小了。

    【讨论】:

    • 嗯,问题是我不知道最大尺寸是多少。圆点可以向任意方向任意移动。
    【解决方案2】:

    从技术上讲,负原点位于滚动视图区域之外。如果您的对象移动到该区域之外,您需要完全重新创建该区域,设置偏移量以使其看起来像您没有重新创建它,然后将您的内容移动到视图中。或者重新定位内容和点,使它们看起来会朝那个方向滚动(如果有意义的话)......

    抽象地说,这就是您定位内容的方式:

    if(object.origin.x < 0) {
     contentArea.origin.x = -contentArea.bounds.width;
     object.origin.x = contentArea.bounds.width + object.origin.x;
    }
    

    希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-09
      • 2018-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多