代码之家  ›  专栏  ›  技术社区  ›  Ujesh Patel

如何使用UISwipeGestureRecognizer设置左/右滑动视图的动画

  •  3
  • Ujesh Patel  · 技术社区  · 11 年前

    尝试在单个视图中进行滑动,它可以工作,但不能在底部获得动画和页面指示器气泡

    - (void)viewDidLoad
    {
    [super viewDidLoad];
    UISwipeGestureRecognizer *swipeleft = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(screenswipeleft)];
    swipeleft.numberOfTouchesRequired=1;
    swipeleft.direction=UISwipeGestureRecognizerDirectionLeft;
    [self.view addGestureRecognizer:swipeleft];
    
    UISwipeGestureRecognizer *swiperight = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(viewDidLoad)];
    swiperight.numberOfTouchesRequired=1;
    swiperight.direction=UISwipeGestureRecognizerDirectionRight;
    [self.view addGestureRecognizer:swiperight];
    
    UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(10, 200, 300, 40)];
    [self.view addSubview:textField];
    NSLog(@"move left");
    
    }
    -(void)screenswipeleft {
    UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(10, 200, 300, 40)];
    [self.view addSubview:textField];
    NSLog(@"move right");
    
    }
    
    3 回复  |  直到 11 年前
        1
  •  2
  •   Saheb Roy    11 年前

    假设要设置UITextField的动画。 UITextField有一个起点为x-50,y-100的CGRect;

       @implementation myViewController{
       UITextField *myTextField; //Declaring a textfield as an instance variable (global).
     }
    
    
        -(void)viewDidLoad{
        myTextField = [UITextField alloc]initWithFrame:CGRectMake(50,100,100,50)];//adding memory and setting its initial position
        //your other codes.
    }
       -(void)screenswipeleft {
       [UIView animateWithDuration:3 animations:^{
            myTextField.frame = CGRectMake:(-75,100,100,50); //setting the same textfield in a position of -75 only showing 1/4th of the textfield. 
    //this block animation would make the textfield animate from its starting position to this position in 3 seconds. (animateWithDuration:3 here u mention its duration).
        }];
       }
    

    将相同的逻辑应用于其他人,您将获得所需的动画。

        2
  •  1
  •   BergQuester    9 年前
    - (void)viewDidLoad
      {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.   
        _leftSwipeGestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipes:)];
        _rightSwipeGestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipes:)];
    
        _leftSwipeGestureRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;
        _rightSwipeGestureRecognizer.direction = UISwipeGestureRecognizerDirectionRight;
    
        [self.view addGestureRecognizer:_leftSwipeGestureRecognizer];
        [self.view addGestureRecognizer:_rightSwipeGestureRecognizer];
    }
    
    - (void)handleSwipes:(UISwipeGestureRecognizer *)sender
     {
        if (sender.direction == UISwipeGestureRecognizerDirectionLeft) {
        CGPoint labelPosition = CGPointMake(self.swipeLabel.frame.origin.x - 100.0, self.swipeLabel.frame.origin.y);
        self.swipeLabel.frame = CGRectMake( labelPosition.x , labelPosition.y , self.swipeLabel.frame.size.width, self.swipeLabel.frame.size.height);
    
        }
    
        if (sender.direction == UISwipeGestureRecognizerDirectionRight) {
            CGPoint labelPosition = CGPointMake(self.swipeLabel.frame.origin.x + 100.0, self.swipeLabel.frame.origin.y);
            self.swipeLabel.frame = CGRectMake( labelPosition.x , labelPosition.y , self.swipeLabel.frame.size.width, self.swipeLabel.frame.size.height);
       }
    }
    
        3
  •  0
  •   Amrendra Pratap Singh    11 年前

    试试这个。

    -(void)screenswipeleft 
    {
       [UIView beginAnimations:nil context:nil];
                           [UIView setAnimationDuration:0.4];
    
                           textField.frame = CGRectMake(10, 200, 300, 40)];
    
    
                           [UIView commitAnimations]
    
    
    
    }