2010-07-07 60 views
0

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

我遇到的问题是如何迭代通过子视图,同时也通过行上的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

我dun想通了......非常感谢。

对于人像模式:

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; 
      } 

     } 

    } 
+0

你做滚动时务必滚动视图不会重置帧如何做, – Omiga 2014-01-11 12:34:36

+0

这是自动布局出现之前,所以你没有必须自设置框架是永久的。 (注意:这个答案是从3.5年前开始的)。有了自动版式,你需要禁用它或者你有更新的约束,以保证他们 – iwasrobbed 2014-01-11 14:10:30

+0

我其实解决了这种方式...谢谢 – Omiga 2014-01-11 17:24:27