我想要一个按钮,可以在点击时切换元素的位置。
我目前的代码:
-(IBAction)menuTouched{
// Push menu
UITableView * sideMenu = [[UITableView alloc] initWithFrame:CGRectMake(1060, 88, 63, 661)];
sideMenu.backgroundColor = [UIColor redColor];
[self.view addSubview:sideMenu];
// Animate
[UIView animateWithDuration:1.25 animations:^{
sideMenu.frame = CGRectMake(960, 88, 63, 661);
}];
}
单击按钮时,它会像我想要的那样为桌面视图设置动画。但是现在我想通过按完全相同的按钮来为tableview设置动画。所以简而言之,我想通过改变X位置来切换进出桌面视图的按钮。什么是最好/最简单的方法?
提前致谢。
答案 0 :(得分:0)
你需要一个bool来存储你所处的状态,但是你可以只使用button.selected状态..这样的东西:
- (IBAction)menuTouched:(id)sender
{
sender.selected = !sender.selected;
if (sender.selected)
{
// toggle on stuff
}
else
{
// toggle off stuff
}
}
答案 1 :(得分:0)
在.h file
添加
UITableView * sideMenu;
BOOL checkInOut;
在.m文件中添加
- (void)viewDidLoad
{
[super viewDidLoad];
checkInOut=False;
// Push menu
sideMenu = [[UITableView alloc] initWithFrame:CGRectMake(1060, 88, 63, 661)];
sideMenu.backgroundColor = [UIColor redColor];
[self.view addSubview:sideMenu];
}
-(IBAction)menuTouched
{
checkInOut=!checkInOut
if(checkInOut)
{
// Animate
[UIView animateWithDuration:1.25 animations:^{
sideMenu.frame = CGRectMake(960, 88, 63, 661);
}];
}
else
{
[UIView animateWithDuration:1.25 animations:^{
sideMenu.frame = CGRectMake(1060, 88, 63, 661);
}];
}
}
答案 2 :(得分:0)
试试吧......
[UIView beginAnimations: nil context: nil];
[UIView setAnimationBeginsFromCurrentState: YES];
[UIView setAnimationDuration: 0.5];
myButton.frame = CGRectMake(0,420,320,120);
[UIView commitAnimations];
希望我帮助过。
答案 3 :(得分:0)
您可以使用之前设置的不同帧执行相同的动画
sideMenu.frame = CGRectMake(1060, 88, 63, 661);
通过检查查看您是否已将表格打入或取出以执行相应的操作。
希望这有帮助。
答案 4 :(得分:0)
您必须收到UIButton引用而不是id
- (IBAction)menuTouched:(UIButton *)sender
{
sender.selected = !sender.selected;
if (sender.selected)
{
[UIView animateWithDuration:1.25 animations:^
{
UITableView * sideMenu = [[UITableView alloc] initWithFrame:CGRectMake(1060, 88, 63, 661)];
sideMenu.backgroundColor = [UIColor redColor];
[self.view addSubview:sideMenu];
sideMenu.frame = CGRectMake(960, 88, 63, 661);
}];
}
else
{
[UIView animateWithDuration:1.25 animations:^{
[sideMenu removeForSuperView];
}];
}
}
答案 5 :(得分:0)
1.设置一个标志位来表示UITableView的当前状态。该语句需要3个变量。
BOOL isShow;
UITableView *sideMenu;
CGFloat posX;
2. viewDidLoad
-(void)viewDidLoad {
isShow=NO;
//to do something...
sideMenu = [[UITableView alloc] initWithFrame:CGRectMake(1060, 88, 63, 661)];
sideMenu.backgroundColor = [UIColor redColor];
[self.view addSubview:sideMenu];
}
3. UITableView显示的只是帧的X坐标的变化。因此你可以根据切换的状态来计算posX。并且注意每次点击时都不要创建UITableView。在viewDidLoad函数上输出UITableView创建代码
-(IBAction)menuTouched{
posX=isShow ? 1060 : 960
// Animate
[UIView animateWithDuration:1.25 animations:^{
sideMenu.frame = CGRectMake(posX, 88, 63, 661);
}];
isShow=!isShow; //boggle button
}