1

私は多くのいいえを持っています。ビュー上のボタンの数と、ボタンをシャッフルしたい (位置を変更する) 場合、ビュー内のボタンをシャッフルするにはどうすればよいですか。

4

2 に答える 2

0

あなたはこれを行うことができます

  1. ポイントを文字列として格納する必要がある CGPoints のグループで配列を作成します。
  2. layoutSubViews メソッドで、次のように設定します。

     -(void)layoutSubViews{
       [self.subviews enumerateObjectsUsingBlock:^(id object, NSUInteger idx, BOOL *stop) {
          CGPoint newPoint = CGPointFromString([positionsArray objectAtIndex:idx]);
         object.frame = CGRectMake(newPoint.x,newPoint.y,object.frame.size.width,object.frame.size.height);
    }];
    

    }

  3. 次に、位置配列内の位置をシャッフルする必要があります。ここでメソッドの例を確認できます:配列をシャッフルする方法

  4. これで、位置をシャッフルする必要があるたび-(void)setNeedsLayoutに、ビューで呼び出すことができます。

他にも選択肢はありますが、それが最初に思いつきました。

幸運を

于 2012-05-09T05:12:53.860 に答える
0

使用するarc4random()

ボタンの位置を変更します

あなたの.h fileUIButton *buttonsarray[10];

あなたの.m file

  // Make array of button using following way.I used this method to creates button and you can use yours.
 - (void)viewDidLoad {
     [super viewDidLoad];

      float y = 5;
      int x = 0;
      int count = 0;
      for (int i = 0 ; i < 10; i++)
     {
        count ++;
        buttonsarray[i] = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        buttonsarray[i].frame =  CGRectMake(x, y, 100, 100);
       [buttonsarray[i] setTitle:[NSString stringWithFormat:@"%d",i+1] forState:UIControlStateNormal];
         x = x + 105;
        [self.view addSubview:b[i]];
        if(count == 3)
       {
        count = 0;
        x = 0;
        y = y+ 105;
      }


    }
}


  // This function will soufflé your buttons
 - (IBAction)btnClicked:(id)sender
   {
     int n = 10;
     int swaper;
     for (int i = 0 ; i < 10 ; i++)
     {
       int r = arc4random()%n;
       if(r != swaper){
        swaper = r;
        CGRect r1 = buttonsarray[i].frame;      
        buttonsarray[i].frame = buttonsarray[swaper].frame;
        buttonsarray[swaper].frame = r1; 

        n--;
    }

  }
}

ホープ、これはあなたを助ける..

于 2012-05-09T05:21:59.610 に答える