如何在UIScrollView中获取UIView内的对象的位置
所以我们可以说我有一个UIScrollView,里面有3个UIViews,每个里面有一个UISlider。 它们在UIScrollView中垂直放置。
我现在在UIScrollView中也有第四个UIView,我希望根据已经使用的滑块的位置移动。
所以在我通过发件人的sliderChanged方法中,我得到了滑块的位置,并将第4个UIWindow的位置调整为y。 这对第一个UIView非常有效,但是一旦在另一个强迫我向下滚动的UIView上,使用滑块移动第四个UIView,但是停留在UIScrollView的开始处
我在用:
[4thView setCenter:CGPointMake([4thView center].x, [slider center].y+10)];
我需要的是获取相对于scrollView内容的滑块位置,而不是相对于它的UIView,这样我可以再次设置相对于scrollView内容的第四个视图。
你可以通过UIView的实例方法转换点。
- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view
- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view
例如,我想将viewA上的ponint转换为scrollViewB的坐标。
CGPoint aPtInScrollView = [viewA convertPoint:aPoint toView:scrollViewB];
或者,我想知道viewView在scrollViewB中的位置。
CGPoint aPosViewA = [scrollViewB convertPoint:CGPointZero fromView:viewA];
使用之前的答案,我花了一点时间来解决我遇到的问题。
如果在一个UIScrollView中有多个UIView的多个UITextView:这将动画并滚动到它们。
这也可以应用于UITextField。
-(void)textViewDidBeginEditing:(UITextView *)textView {
[self.theScrollView setContentOffset:[self.theScrollView convertPoint:CGPointMake(textView.frame.origin.x, textView.frame.origin.y) fromView:textView.superview] animated:YES];
}
如果您的文字视图上方有标签,只需将x或y抵消该数量即可。
链接地址: http://www.djcxy.com/p/44259.html上一篇: how to get the position of an object within a UIView, within a UIScrollView