私は多くのいいえを持っています。ビュー上のボタンの数と、ボタンをシャッフルしたい (位置を変更する) 場合、ビュー内のボタンをシャッフルするにはどうすればよいですか。
2 に答える
0
あなたはこれを行うことができます
- ポイントを文字列として格納する必要がある CGPoints のグループで配列を作成します。
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); }];
}
次に、位置配列内の位置をシャッフルする必要があります。ここでメソッドの例を確認できます:配列をシャッフルする方法
- これで、位置をシャッフルする必要があるたび
-(void)setNeedsLayout
に、ビューで呼び出すことができます。
他にも選択肢はありますが、それが最初に思いつきました。
幸運を
于 2012-05-09T05:12:53.860 に答える
0
使用するarc4random()
ボタンの位置を変更します
あなたの.h file
:UIButton *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 に答える