Изменение кадров подвида в UIScrollView при повороте

У меня есть ряды подпредставлений в UIScrollView, которые я хочу изменить после перехода в ландшафтный режим. В идеале я хочу иметь 5 кнопок в строке с общим количеством строк, определяемым высотой кнопки и общим количеством кнопок (плюс некоторые отступы).

Проблема, с которой я сталкиваюсь, заключается в том, как перебирать подвиды, а также перебирать x-позицию для 5 кнопок в строке, а затем изменять y-позицию после того, как я нажму ограничение на 5 кнопок, чтобы начать новую строку.

Прямо сейчас я могу перебирать подвиды, но я не уверен, как автоматизировать настройку кадра для 5 в строке, а затем изменить положение y, чтобы начать новую строку. Любые предложения очень ценятся!

for (UIView *subview in someScrollView.subviews)
{
        if (subview.tag >= 100) {

            [subview setFrame: CGRectMake(x, y, buttonWidth, buttonHeight)];
            NSLog(@"%.1f %.1f %d %d on subview %d", x, y, buttonWidth, buttonHeight, subview.tag);

        } 

}

person iwasrobbed    schedule 07.07.2010    source источник


Ответы (1)


Я так и не понял... все равно спасибо.

Для портретного режима:

    for (UIView *subview in outletScrollView.subviews)
    {
        if (x <= 320 && subview.tag != 0) {

            [subview setFrame: CGRectMake(x, y, buttonWidth, buttonHeight)];
            //NSLog(@"%.1f %.1f %d %d on subview %d", x, y, buttonWidth, buttonHeight, subview.tag);

            x = x + buttonWidth + gapX;

            if (x == 320) {
                x = gapX;
                y = y + buttonHeight + gapY;
            }

        }

    }

Для ландшафтного режима:

    for (UIView *subview in outletScrollView.subviews)
    {
        if (x <= 480 && subview.tag != 0) {

            [subview setFrame: CGRectMake(x, y, buttonWidth, buttonHeight)];
            //NSLog(@"%.1f %.1f %d %d on subview %d", x, y, buttonWidth, buttonHeight, subview.tag);

            x = x + buttonWidth + gapX;

            if (x == 480) {
                x = gapX;
                y = y + buttonHeight + gapY;
            }

        }

    }
person iwasrobbed    schedule 07.07.2010
comment
Как вы убедились, что scrollview не будет сбрасывать кадры при прокрутке, - person Omiga; 11.01.2014
comment
Это было до того, как существовал автомакет, поэтому вам не нужно было этого делать, поскольку установка фрейма была постоянной. (примечание: этот ответ был 3,5 года назад). С автомакетом вам нужно либо отключить его, либо вам нужно обновить ограничения, чтобы гарантировать, что они останутся. - person iwasrobbed; 11.01.2014