【问题标题】:UIScrollView view port coordinatesUIScrollView 视口坐标
【发布时间】:2016-09-07 07:10:22
【问题描述】:

这就是我在viewDidLoad 中添加UIScrollView 的方式

    UIScrollView* scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)]; 
scrollView.backgroundColor = [UIColor redColor]; 
scrollView.scrollEnabled = YES; 
scrollView.pagingEnabled = YES; 
scrollView.showsVerticalScrollIndicator = YES; 
scrollView.showsHorizontalScrollIndicator = YES; 
scrollView.contentSize = CGSizeMake(self.view.bounds.size.width , self.view.bounds.size.height * 2); 
[self.view addSubview:scrollView]; 
scrollView.delegate = self;

第一次加载scrollView时,它的坐标是:{(0,0), (widthOfiPhone, 0), (0, heightOfiPhone), (widthOfiPhone, heightOfiPhone)}

每当滚动完成时,我想在滚动视图中获取视口的坐标。这该怎么做?谢谢

编辑:

图片来源:https://oleb.net/blog/2014/04/understanding-uiscrollview/

【问题讨论】:

  • viewport 是什么意思?
  • 在任何给定时间点在屏幕上可见的滚动视图的内容。比如说,如果我的 contentsize 是 320*1500,在 iphone 5s 上,当第一次加载滚动视图时,视口的坐标是 {(0,0), (320, 0), (0, 568), (320, 568)}
  • @VamshiKrishna 您的问题不清楚。添加更多详细信息,以便有人可以为您提供好的解决方案

标签: ios objective-c uiscrollview uiscrollviewdelegate


【解决方案1】:

首先观察scrollview代理,然后实现它的代理方法

(void) scrollViewDidEndDecelerating: (UIScrollView *) scrollView {
    NSLog (@ "% f,% f,% f,% f", scrollView.frame.origin.x,
    scrollView.frame.origin.y,
    scrollView.frame.size.width,
    scrollView.frame.size.height);
}

这应该是可能的

【讨论】:

    【解决方案2】:

    您可以实现UIScrollView delegate 方法来检测滚动何时结束:scrollViewDidEndDecelerating,在此方法中您可以获得scrollview 的坐标,它是content。顺便说一句content's 坐标在滚动视图方面将是相同的!!!

    您可以从滚动视图中获取visible rect,例如,

      CGRect visibleRect = [subViewOfScrollView convertRect:subViewOfScrollView.bounds toView:self.view];
    

    【讨论】:

    • 这里的'yourSubview'是什么?
    • 这总是给我' {{0, 0}, {320, 568}}' 输出。如果您看到我附上的 gif,y 坐标会不断变化。
    • 您到底想要什么?您想要相对于主视图(self.view)还是相对于滚动视图或其他坐标?
    • 看!如果我的内容大小是 2000,最初 y 应该是 568(在 iphone 5c 上)!如果我做一个小的向上滚动,内容 y 应该在 800 左右吧?然后是另一个卷轴,最后是 2000
    猜你喜欢
    • 1970-01-01
    • 2012-04-18
    • 2023-03-21
    • 2012-01-08
    • 1970-01-01
    • 2023-04-04
    • 2018-11-16
    • 2019-01-10
    • 1970-01-01
    相关资源
    最近更新 更多