我有UIScrollView标签。我正在获取触摸事件坐标。当用户点击屏幕时,我将变量中的点击坐标存储起来,然后我想以这种方式滚动视图(使用类似于[myScrollView setContentOffset])的方式,这样点击点的y坐标将成为我的视图的中心,所以当你点击一些文本时,它会自动滚动到屏幕中心。我不知道如何锻炼这个数学...滚动点击在UIScrollView中的屏幕中心
任何帮助高度赞赏!
我有UIScrollView标签。我正在获取触摸事件坐标。当用户点击屏幕时,我将变量中的点击坐标存储起来,然后我想以这种方式滚动视图(使用类似于[myScrollView setContentOffset])的方式,这样点击点的y坐标将成为我的视图的中心,所以当你点击一些文本时,它会自动滚动到屏幕中心。我不知道如何锻炼这个数学...滚动点击在UIScrollView中的屏幕中心
任何帮助高度赞赏!
UIScrollView *aScrollView;
CGPoint touchPoint;
[aScrollView scrollRectToVisible:CGRectMake(touchPoint.x - roundf(aScrollView.frame.size.width/2.),
touchPoint.y - roundf(aScrollView.frame.size.height/2.),
aScrollView.frame.size.width,
aScrollView.frame.size.height)
animated:YES];
应该工作。
我的解决方案非常相似,但我使用的是缩放,我想以视图为中心,而不是触摸点。所以我需要先计算中心点。
我的最终代码:
UIView *view; //View to center
UIScrollView *scrollView; //scroll view
CGPoint point = CGPointMake(view.frame.origin.x + view.frame.size.width/2,
view.frame.origin.y + view.frame.size.height/2);
CGRect rectToZoom = CGRectMake(point.x * scrollView.zoomScale - roundf(scrollView.frame.size.width /2.),
point.y * scrollView.zoomScale - roundf(scrollView.frame.size.height /2.),
scrollView.frame.size.width,
scrollView.frame.size.height);
[scrollView scrollRectToVisible:rectToZoom animated:YES];
感谢凯,它的工作原理。但仍然有问题 - 第一次点击某些文本时,它会滚动到中心,这正是我想要的。但是如果你再次点击它(当它停留在屏幕的中心)时,它会回滚到之前的位置...... – izaslavs 2012-04-24 09:04:01
听起来很奇怪。也许你不会以正确的方式抓住/存储触点。发布一些代码(也许在另一个问题)。 – 2012-04-24 09:24:55
@KaiHuppmann此代码正在运行完美。谢谢。但你能帮助我吗?当缩放视图时这不起作用。你能帮我在这里应用缩放比例吗? – 2013-11-23 09:59:08