Изменить представление в UIScrollView с помощью NSTimer - PullRequest
0 голосов
/ 25 октября 2011

Я использую следующий код для создания UIScrollView:

UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
scroll.pagingEnabled = YES;
NSInteger numberOfViews = 3;
for (int i = 0; i < numberOfViews; i++) {

    CGFloat yOrigin = i * self.view.frame.size.width;
    UIView *awesomeView = [[UIView alloc] initWithFrame:CGRectMake(yOrigin, 0, self.view.frame.size.width, self.view.frame.size.height)];
    awesomeView.backgroundColor = [UIColor colorWithRed:0.5/i green:0.5 blue:0.5 alpha:1];
    [scroll addSubview:awesomeView];

}

scroll.contentSize = CGSizeMake(self.view.frame.size.width * numberOfViews, self.view.frame.size.height);

[self.view addSubview:scroll];

Вопрос: как мне реализовать NSTimer, чтобы менять страницу каждые 4 секунды?

    [NSTimer scheduledTimerWithTimeInterval:4.0f
                                 target:self
                               selector:@selector(updateCounter:)
                               userInfo:nil
                                repeats:YES];

Я изо всех сил пытаюсь написать метод updateCounter. Пожалуйста, помогите

- (void)updateCounter:(NSTimer *)theTimer {
 NSInteger numberOfViews = 3;
     int i = 0; i++;
     if (i < numberOfViews) {

    yOrigin = i * self.view.frame.size.width;
    [scroll scrollRectToVisible:CGRectMake(yOrigin, 0, self.view.frame.size.width,      self.view.frame.size.height) animated:YES];
}

return; }

ОК, поэтому с этим кодом NSTimer изменяется с просмотр 1 на просмотр 2 , но останавливается, не меняется через следующие 4 секунды до вид 3 . То, что я хочу сделать, это изменить с просмотр 1 на просмотр 2 через 4 секунды, затем на просмотр 3 , через 4 секунды и т. Д. , Я хочу иметь столько просмотров, сколько мне нужно.

Ответы [ 2 ]

0 голосов
/ 25 октября 2011

вы все делаете правильно.Теперь вам нужно реализовать updateCounter, чтобы прокрутка scrollView происходила автоматически.поддерживать глобальный счетчик ширины.Продолжайте обновлять этот счетчик при каждом вызове до updateCounter.Вы можете сделать это так -

int global_width  = self.view.frame.size.width;
int global_height = self.view.frame.size.height;
- (void) updateCounter
{
    int width = (global_width%self.view.frame.size.width)*self.view.frame.size.width;
    [yourScrollView scrollRectToVisible:CGRectMake(0, 0, width, global_height) animated:YES];

    global_width  += self.view.frame.size.width;
    return;
}

Таким образом, вы будете автоматически переключаться между страницами.Хотя это работает, все это напечатано от руки.Но концепция верна.

0 голосов
/ 25 октября 2011

Если вы хотите обновлять счетчик каждые четыре секунды, вызовите метод updateCounter следующим образом:

[NSTimer scheduledTimerWithTimeInterval:4.0f
                                 target:self
                               selector:@selector(updateCounter)
                               userInfo:nil
                                repeats:YES];

В том, что вы сделали, есть два отличия.# 1, временной интервал составляет 4 секунды.# 2, если у вас нет параметров, входящих в метод updateCounter, не добавляйте двоеточие в селектор.

А затем ваш метод updateCounter:

- (void) updateCounter
{
    // what view are you modifying?
    // the content view or a subview within the ScrollView's contentView ?   
}
...