gpt4 book ai didi

iphone - 如何在循环内动态命名 UIButtons 以及如何制作动画

转载 作者:行者123 更新时间:2023-12-03 17:43:26 26 4
gpt4 key购买 nike

我在这段代码中创建了 7 个具有不同名称的按钮,并为每个按钮设置了标签和框架。

如果我单击某个特定按钮,它会调用 buttonPresed: 并进入 switch 语句,根据标签进行分支。但是,如果我单击按钮 1、2、3、4、5 或 6 之一,则最后一个按钮会上下移动。我不想让那个按钮移动;我希望每个按钮根据标签移动。

-(void)btnMethod
{
for(int i1=0;i1<[characters11arrary count];i1++)
{
NSString *str=[[NSString alloc]init];
str=[characters11arrary objectAtIndex:i1];

NSInteger idcard = [str integerValue];
idcard--;

btn=[[UIButton alloc]initWithFrame:CGRectMake(-15,140+w11,70,55)];
[btn setBackgroundImage:[arrayPlayerCard objectAtIndex:idcard] forState:UIControlStateNormal];

btn.tag=j11;
[btn addTarget:self action:@selector(buttonPresed:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
w11+=20;
j11+=1;
idcard=0;
}

}
-(void)buttonPresed:(id)sender
{
UIButton *btnTag=(UIButton*)sender;
d =btnTag.tag;
NSLog(@"tagc= %i",d);
switch(d)
{
case 1:
if(t==1)
{

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0];
[UIView setAnimationBeginsFromCurrentState:YES];
CGAffineTransform transform1 =CGAffineTransformMakeTranslation(30,0);

[btn setTransform:transform1];
t=0;
break;
}
else //if(t==0)
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0];
[UIView setAnimationBeginsFromCurrentState:YES];
CGAffineTransform transform1 = CGAffineTransformMakeTranslation(0,0);
[btn setTransform:transform1];
t=1;
break;

}
case 2:....................................
.......................................................
}

最佳答案

您使用[btn setTransform:...]而不是[sender setTransform:...]
认为“btn”具有最后分配的按钮的地址,因此每次最后一个按钮时您的函数都会移动。

如果您使用发送器,则不需要开关。

-(void)buttonPresed:(id)sender
{
if ([sender transform].ty == 0) {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration: 1];
[UIView setAnimationBeginsFromCurrentState:YES];
CGAffineTransform transform1 =CGAffineTransformMakeTranslation(0,-30);

[sender setTransform:transform1];
[UIView commitAnimations];
}
else{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration: 1];
[UIView setAnimationBeginsFromCurrentState:YES];
CGAffineTransform transform1 =CGAffineTransformMakeTranslation(0,0);

[sender setTransform:transform1];
[UIView commitAnimations];
}
}

这可行,但你的翻译做了左右动画而不是上下动画,在我的代码中改变了它

关于iphone - 如何在循环内动态命名 UIButtons 以及如何制作动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5482982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com