2010-07-07 59 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