Расположение объекта после прокрутки в UIScrollView - PullRequest
0 голосов
/ 23 апреля 2010

У меня на UIView есть scrollView (ширина: 320px высота: 100px), внутри которого я добавляю 10 изображений с шириной: 106.5px каждое. После этого я использую эту функцию, чтобы в моем scrollView было 3 разных части, поэтому при каждой прокрутке изображение автоматически будет в центре.


-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {

    [self returnToPosition:self.scrollView];
}

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {

    [self returnToPosition:self.scrollView];
}

-(void)returnToPosition:(UIScrollView *)scrollView {

    CGFloat itemWidth = 106.5f;
    CGFloat position = [self.scrollView contentOffset].x;
    CGFloat newPosition = 0.0f;
    CGFloat offSet = position / itemWidth;
    NSUInteger target = (NSUInteger)(offSet + 0.5f);

    newPosition = target * itemWidth;

    [self.scrollView setContentOffset:CGPointMake(newPosition, 0.0f) animated:YES];

}

Вот мой вопрос, я хочу знать, какое изображение будет в средней позиции после того, как пользователь прокрутит просмотр, потому что я хочу отобразить на моем UIView текст, относящийся к этому изображению. Но я не знаю, как это сделать.

Некоторые идеи?

1 Ответ

0 голосов
/ 27 апреля 2010

Ну, я не собираюсь вставлять здесь много кода, но вот как я это делаю: Я сохраняю пространственный индекс (rtree), куда я вставляю все свои объекты. Намного быстрее получить список предметов, пересекающихся с данным. У меня есть класс, который также является делегатом моего scrollview. И каждый раз, когда вызывается scrollViewDidScroll: я получаю visibleRect представления моего контента, затем с помощью индекса rtree быстро определяю местоположение элементов в прямоугольнике и рисую соответственно.

Вам нужно будет решить, какое изображение находится «посередине», если ваше изображение маленькое, и в видимом прямоугольнике вида прокрутки может быть 4 подгонки.

Надеюсь, это поможет, Роберт

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...