UIScrollView -setContentOffset: анимированные ДА или НЕТ дают разные результаты

#ios #objective-c #uiscrollview

#iOS #objective-c #uiscrollview

Вопрос:

хей, я знаю, это звучит глупо. Я программирую свой первый UIScrollView и пытаюсь установить положение элементов внутри вида прокрутки в соответствии с некоторым параметром. Я обнаружил, что могу использовать setContentOffset для этого, но независимо от того, какие значения я вводил в эту функцию, результат всегда один и тот же, и я понятия не имею, почему? (это проблема с размером содержимого вида прокрутки?)

вот мой код:

сначала я настроил вид прокрутки следующим образом:

 //make view scrollable
scrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height-216-30)];
scrollView.scrollsToTop = NO;
scrollView.bounces=NO;
[self.view addSubview: scrollView];
scrollView.contentSize=CGSizeMake([[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height-110);
  

и позже я пытаюсь установить положение прокрутки

  if(yMultiplier==4){
                [scrollView setContentOffset:CGPointMake(0,imageHeight) animated:NO];
                NSLog(@"4");
            } else
    if(yMultiplier==5){
                [scrollView setContentOffset:CGPointMake(0,imageHeight*2) animated:NO];
                NSLog(@"4");
            }
  

Редактировать:
Независимо от того, какова координата y точки CGPoint, она всегда прокручивается до одной и той же точки.
Теперь я попытался использовать анимированные: ДА. что приводит к чему-то другому. Затем он прокручивается до намеченной позиции, но у меня новая проблема: поскольку я добавляю несколько изображений в зависимости от того, что вводит пользователь, прокрутка отлично работает для любого другого изображения. и для второго изображения оно прокручивается обратно в исходное положение…
это код для этого

 if(yMultiplier>3){
            CGPoint bottomOffset = CGPointMake(0, imageHeight*3);
            [scrollView setContentOffset:bottomOffset animated:YES];
        }
  

Редактировать:
регистрация смещения - (void)scrollViewDidScroll:(UIScrollView *)scrollView{
NSLog(@"offset: %f, %f",scrollView.contentOffset.x, scrollView.contentOffset.y);
}

дает следующее:

изначально:

 offset: 0.000000, -64.000000
offset: 0.000000, -64.000000
  

при переходе в правильное положение:

 2014-06-26 16:56:28.722 ualphabets[5058:60b] offset: 0.000000, -63.500000
2014-06-26 16:56:28.739 ualphabets[5058:60b] offset: 0.000000, -61.500000
2014-06-26 16:56:28.756 ualphabets[5058:60b] offset: 0.000000, -57.500000
2014-06-26 16:56:28.772 ualphabets[5058:60b] offset: 0.000000, -51.500000
2014-06-26 16:56:28.789 ualphabets[5058:60b] offset: 0.000000, -44.000000
2014-06-26 16:56:28.806 ualphabets[5058:60b] offset: 0.000000, -35.000000
2014-06-26 16:56:28.822 ualphabets[5058:60b] offset: 0.000000, -25.500000
2014-06-26 16:56:28.839 ualphabets[5058:60b] offset: 0.000000, -14.500000
2014-06-26 16:56:28.855 ualphabets[5058:60b] offset: 0.000000, -3.500000
2014-06-26 16:56:28.872 ualphabets[5058:60b] offset: 0.000000, 7.500000
2014-06-26 16:56:28.889 ualphabets[5058:60b] offset: 0.000000, 18.500000
2014-06-26 16:56:28.905 ualphabets[5058:60b] offset: 0.000000, 29.000000
2014-06-26 16:56:28.922 ualphabets[5058:60b] offset: 0.000000, 39.000000
2014-06-26 16:56:28.939 ualphabets[5058:60b] offset: 0.000000, 47.000000
2014-06-26 16:56:28.956 ualphabets[5058:60b] offset: 0.000000, 54.000000
2014-06-26 16:56:28.972 ualphabets[5058:60b] offset: 0.000000, 59.500000
2014-06-26 16:56:28.989 ualphabets[5058:60b] offset: 0.000000, 63.500000
2014-06-26 16:56:29.005 ualphabets[5058:60b] offset: 0.000000, 65.000000
  

когда все остальные изображения переходят в какое-то неправильное место:

 2014-06-26 16:56:31.516 ualphabets[5058:60b] offset: 0.000000, 12.500000
  

Комментарии:

1. Пожалуйста, войдите contentsize и imageheight ?

2. объяснил результаты в редактировании выше.

3. размер содержимого: 320.000000, 458.000000 высота изображения 65.0999998

4. Можете ли вы зарегистрировать scrollViewDidScroll: метод, чтобы увидеть, как меняется смещение? Установить animated:YES

5. смещение не меняется. он всегда остается на уровне imageHeight или imageHeight * 2