iOS / Xcode - 切换按钮更改位置

时间:2013-05-13 12:29:02

标签: iphone ios objective-c ipad tableview

我想要一个按钮,可以在点击时切换元素的位置。

我目前的代码:

-(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位置来切换进出桌面视图的按钮。什么是最好/最简单的方法?

提前致谢。

6 个答案:

答案 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
}