在旋转时更改UIScrollView中的子视图帧

时间:2010-07-07 03:16:01

标签: iphone objective-c uiscrollview rotation subview

我在UIScrollView中有多行子视图,我想在旋转到横向模式后重新排列。理想情况下,我希望每行有5个按钮,总行数由按钮高度确定,总共有多少按钮(加上一些填充)。

我遇到的问题是如何迭代子视图,同时在行的5个按钮上迭代x位置,然后在我按下5个按钮限制以开始新行后更改y位置。

现在我可以遍历子视图,但我不确定如何自动设置每行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);

        } 

}

1 个答案:

答案 0 :(得分: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;
            }

        }

    }