Программно прокрутите UIScrollView

У меня есть UIScrollView, который имеет несколько представлений. Когда пользователь щелкает пальцем, вид прокручивается вправо или влево в зависимости от направления движения пальца. В основном мой код работает так же, как приложение для iPhone. Теперь, есть ли способ, которым я могу программно сделать то же самое, чтобы в итоге я получил слайд-шоу, которое запускается одним щелчком кнопки и настраиваемой паузой между каждым прокруткой?

Как вы действительно делаете слайд-шоу с помощью UIScrollView?

+118
10 февр. '10 в 6:29
источник поделиться
8 ответов

Вы можете прокрутить до некоторой точки в режиме прокрутки одним из следующих операторов в Objective-C

[scrollView scrollRectToVisible:CGRectMake(x, y, 1, 1) animated:YES];
// or
[scrollView setContentOffset:CGPointMake(x, y) animated:YES];

или Swift

scrollView.scrollRectToVisible(CGRect(x: x, y: y, width: 1, height: 1), animated: true)
// or
scrollView.setContentOffset(CGPoint(x: x, y: y), animated: true)

См. руководство .

Чтобы сделать слайд-шоу с UIScrollView, вы упорядочиваете все изображения в режиме прокрутки, настраиваете повторяющийся таймер, затем -setContentOffset:animated:, когда срабатывает таймер.

Но более эффективным подходом является использование 2 представлений изображений и их замена их с помощью переходов или просто переключение мест при срабатывании таймера. Подробнее см. слайд-шоу iPhone.

+307
10 февр. '10 в 13:41
источник

Если вы хотите контролировать продолжительность и стиль анимации, вы можете сделать:

[UIView animateWithDuration:2.0f delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
    scrollView.contentOffset = CGPointMake(x, y);
} completion:NULL];

Отрегулируйте продолжительность (2.0f) и параметры (UIViewAnimationOptionCurveLinear), чтобы попробовать!

+32
03 мар. '14 в 4:49
источник
другие ответы

Связанные вопросы


Похожие вопросы

Другой способ -

scrollView.contentOffset = CGPointMake(x,y);
+10
23 июн. '12 в 21:01
источник

С анимацией в Swift

scrollView.setContentOffset(CGPointMake(x, y), animated: true)
+4
17 июн. '15 в 17:39
источник

Swift 3

   let point = CGPoint(x: 0, y: 200) // 200 or any value you like.
    scrollView.contentOffset = point
+2
15 мар. '17 в 18:29
источник
- (void)viewDidLoad
{
    [super viewDidLoad];
    board=[[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.height, 80)];
    board.backgroundColor=[UIColor greenColor];
    [self.view addSubview:board];
    // Do any additional setup after loading the view.
}


-(void)viewDidLayoutSubviews
{


    NSString *str=@"ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    index=1;
    for (int i=0; i<20; i++)
    {
        UILabel *lbl=[[UILabel alloc]initWithFrame:CGRectMake(-50, 15, 50, 50)];
        lbl.tag=i+1;
        lbl.text=[NSString stringWithFormat:@"%c",[str characterAtIndex:arc4random()%str.length]];
        lbl.textColor=[UIColor darkGrayColor];
        lbl.textAlignment=NSTextAlignmentCenter;
        lbl.font=[UIFont systemFontOfSize:40];
        lbl.layer.borderWidth=1;
        lbl.layer.borderColor=[UIColor blackColor].CGColor;
        [board addSubview:lbl];
    }

    [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(CallAnimation) userInfo:nil repeats:YES];

    NSLog(@"%d",[board subviews].count);
}


-(void)CallAnimation
{

    if (index>20) {
        index=1;
    }
    UIView *aView=[board viewWithTag:index];
    [self doAnimation:aView];
    index++;
    NSLog(@"%d",index);
}

-(void)doAnimation:(UIView*)aView
{
    [UIView animateWithDuration:10 delay:0 options:UIViewAnimationOptionCurveLinear  animations:^{
        aView.frame=CGRectMake(self.view.frame.size.height, 15, 50, 50);
    }
                     completion:^(BOOL isDone)
     {
         if (isDone) {
             //do Somthing
                        aView.frame=CGRectMake(-50, 15, 50, 50);
         }
     }];
}
+1
12 сент. '14 в 11:15
источник
scrollView.setContentOffset(CGPoint(x: y, y: x), animated: true)
0
17 февр. '16 в 3:47
источник
[Scrollview setContentOffset:CGPointMake(x, y) animated:YES];
0
06 мая '16 в 12:09
источник

Посмотрите другие вопросы по меткам или Задайте вопрос