0

私は を持っていて、UIViewプログラムで生成された一連のものをそれに追加したいと考えてUIButtonsいます。

を介して(標準サイズの)各ボタンを配置するメソッドを作成しましたCGPoint

これらのボタンを 3 行に並べて、必要な数の行に配置したいと考えています。

ビューに項目を配置するために x 座標と y 座標をプログラムで生成する方法がわかりません。3つ配置したら、ボタンを新しい行にドロップする方法に行き詰まっています。

これが私のコードです。このメソッドで何かを処理して、ボタンのインデックスのみに基づいて座標を返したいと思います:

- (CGPoint)calculateCoordinatesWithIndex:(NSInteger)index{
    NSInteger x = 100;
    NSInteger y = 50;
    return CGPointMake(x, y);
}

私が考えることができる唯一の解決策は、本当にぎこちなく、非効率的です。

4

3 に答える 3

2

こんにちは、次のようなものはどうですか:

#define BUTTON_WIDTH    100
#define BUTTON_HEIGHT   50
- (void) placeButtonsFromButtonsArray:(NSArray *) buttons{

   CGFloat currentXPosition = 0.0;
   CGFloat currentYPosition = 0.0;

   for (NSUInteger i = 0; i < [buttons count]; i++){
        b.frame = CGRectMake(currentXPosition, currentYPosition, BUTTON_WIDTH, BUTTON_HEIGHT);
        if (i%3 == 2){
           currentXPosition = 0;
           currentYPostion += BUTTON_HEIGHT;
        }
        else currentXPosition += BUTTON_WIDTH;
   }
}

またはあなたの方法を使用して:

  - (CGPoint)calculateCoordinatesWithIndex:(NSInteger)index{

     //computes on which line the button should be
     NSUInteger line = (index/3);

     //computes on which row the button should be 
     NSUInteger row = (index%3) ;     

     return CGPointMake(row*BUTTON_WIDTH, line*BUTTON_HEIGHT);
}
于 2012-12-21T12:18:29.993 に答える
1

iOS 6 をターゲットにしている場合は、これに UICollectionView を使用できます。

于 2012-12-21T12:33:57.207 に答える
0

.hでこれを試してください

  {

NSInteger x;

 NSInteger y;

 int noOfbtninrow;

 }

  -(void)viewDidload

{


x = 100;

y = 50;

 noOfbtninrow=0;
 }

- (CGPoint)calculateCoordinatesWithIndex:(NSInteger)index
 {
   if(noOfbtninrow==3)

 {
  x=100;
   y=y+100
 noOfbtninrow=0;
  }

  else

 {
  noOfbtninrow++;
   x=x+100;
  }
  return CGPointMake(x, y);
  }
于 2012-12-21T12:17:58.150 に答える