как получить положение объекта в UIView, в UIScrollView - PullRequest
12 голосов
/ 12 января 2011

так скажем, у меня есть UIScrollView, в нем 3 UIViews, в пределах которых есть UISlider в каждом. они расположены вертикально в UIScrollView.

Теперь у меня есть также 4-й UIView в UIScrollView, который я хочу перемещать в зависимости от положения используемого ползунка.

поэтому в моем методе sliderChanged, который я передаю отправителю, я получаю положение ползунка и корректирую положение 4-го окна UI в его y. Это прекрасно работает в первом UIView, но один раз в другом UIView, который заставил меня прокрутить вниз, с помощью ползунка перемещает 4-й UIView, но остается в начале UIScrollView

Я использую:

[4thView setCenter:CGPointMake([4thView center].x, [slider center].y+10)];

мне нужно получить положение ползунка относительно содержимого scrollView, а не относительно его UIView, чтобы я мог снова установить 4-й вид относительно содержимого scrollView.

Ответы [ 2 ]

34 голосов
/ 12 января 2011

Вы можете преобразовать точки методами экземпляра UIView.

- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view
- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view

Например, я хочу преобразовать ponint в viewA в координаты scrollViewB.

CGPoint aPtInScrollView = [viewA convertPoint:aPoint toView:scrollViewB]; 

Или,Я хочу знать положение viewA в scrollViewB.

 CGPoint aPosViewA = [scrollViewB convertPoint:CGPointZero fromView:viewA]; 
2 голосов
/ 18 июня 2015

Используя предыдущий ответ, я решил продвинуться немного дальше, чтобы решить возникшую проблему.

Если у вас есть несколько UITextView в нескольких UIView все внутри одного UIScrollView: это будет анимировать и прокрутить их.

Это также может быть применено к UITextField's.

-(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 на эту величину.

...