Выкладка изображений в UIScrollview - PullRequest
1 голос
/ 28 мая 2011

Я отображаю несколько изображений в UIScrollView.

У меня также есть кнопка на виде, которая при нажатии расширяет вид, как показано:

- (IBAction) expandButtonTouched {
    NSLog(@"Expand Button Touched");
    CGRect frame = CGRectMake(0, 50, 320, 410); // New scrollview location
    CGRect scrollviewFrame = CGRectMake(0, 30, 320, 380);
    [UIView beginAnimations:@"MoveAndStrech" context:nil];
    [UIView setAnimationDuration:1];
    [UIView setAnimationBeginsFromCurrentState:YES];

    self.frame = frame;
    scrollView.frame = scrollviewFrame;

    [self layoutScrollImages];


    [UIView commitAnimations];
}

Мой макетМетод images определяется следующим образом:

- (void)layoutScrollImages
{
    UIImageView *view = nil;
    NSArray *subviews = [scrollView subviews];

    // reposition all image subviews in a horizontal serial fashion
    CGFloat curXLoc = 0;
    for (view in subviews)
    {
        if ([view isKindOfClass:[UIImageView class]] && view.tag > 0)
        {
            CGRect frame = view.frame;
            frame.origin = CGPointMake(curXLoc, 0);
            view.frame = frame;

            curXLoc += (kScrollObjWidth);
        }
    }

    // set the content size so it can be scrollable
    [scrollView setContentSize:CGSizeMake((kNumImages * kScrollObjWidth), [scrollView bounds].size.height)];
}

Проблема заключается в том, что после изменения размера представления прокрутки содержимое в нем не переупорядочивается.Он по-прежнему отображает только одну строку изображений, где я хотел бы, чтобы она отображалась как таковая (на основе 9 изображений на странице):

1 2 3 | 10 11 12 | 19 20 21
4 5 6 | 13 14 15 | 22 23 24
7 8 9 | 16 17 18 | 25 26 27 (and so on)

1 Ответ

1 голос
/ 28 мая 2011

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

У меня был бы некоторый код, который проверяет доступную высоту (y), и, если места достаточно, добавьте дополнительную строку.Вам нужно будет решить, будете ли вы сначала заполнять строки или столбцы, потому что это повлияет на порядок отображения элементов

из вашего кода. Кажется, вы хотите сначала заполнить строки, поэтому вам нужно будет определить, сколько элементовв строке и измените код зацикливания, чтобы он перемещал значение x обратно в начало, когда начинается новая строка ... нет никакого автоматизированного способа сделать это, даже ваш собственный код показывает, что вы просто корректируете значения x ...

эта строка кода

frame.origin = CGPointMake(curXLoc, 0);

имеет литерал 0 для y, вам нужно добавить дополнительную логику, чтобы решить, будете ли вы корректировать значение y на основе высоты представления прокрутки

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