代码之家  ›  专栏  ›  技术社区  ›  Vladimir

在UIScrollView中显示UIView的子区域

  •  4
  • Vladimir  · 技术社区  · 15 年前

    最好的方法是什么?

    我现在做的是:

    • 有一个很大的 UIView
    • 计算并应用 CGAffineTransform

      contentView.transform = CGAffineTransformMake(cos(angle), sin(angle), -sin(angle), cos(angle), -requiredRect.origin.x, -requiredRect.origin.y);
      
    • 将scrollview的内容大小设置为所需值。

      scrollView.contentSize = CGSizeMake(someWidth, someHeight);
      

    • scrollViewDidEndZooming 但是看起来很奇怪。
    • 缩放似乎应用了不正确的定位点,看起来不好看(视图“跳转”到另一个位置后,缩放完成)

    你能提出解决这个问题的另一种方法吗?或者指出可以做些什么来改进我目前的方法?看来 UIScrollView

    1 回复  |  直到 15 年前
        1
  •  0
  •   Vladimir    15 年前

    尽管我对我的解决方案并不完全满意,但我还是得出了以下结论:在代理的 -scrollViewDidScroll 方法检查当前可见区域是否是有限区域的子区域。如果不是我调整内容偏移没有动画,使可见区域符合限制。

    - (void)scrollViewDidScroll:(UIScrollView *)aScrollView{
        if (!CGRectContainsRect(myLimitRect, [aScrollView visibleRect]){
             // calculate new contents offset to make visible region fit limits
             [aScrollView setContentOffset:newContentOffset animated:NO}; 
        }   
    }