Wrap an image around the screen using CMMotionManager?

What I'm trying to accomplish is moving the UIImageView to the top of the iPhone screen and then continuing to move it, but as soon as the image passes the top edge, it will appear at the bottom of the screen as it continues to move. also lett right and left

it will move through the accelerometer, and also on UISwipeGesture I used two identical images, but did not work properly if anyone has an example, please share

maybe with one image?

enter image description here

If anyone knows about this task let me know.

thank.

+4
source share
1 answer

Using an accelerometer

1) _imageView 2) _imgViewTemp

         - (void)startUpdateAccelerometer:(UIImageView*)ImgView1 view:(UIView*)boundView
          {
          if ([self.mManager isAccelerometerAvailable] == YES) {
    // self.mManager.accelerometerUpdateInterval = 1.0/10000.0;
            [self.mManager startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error)
         {
           CGRect imgFrame = _imageView.frame;

            if(isWindowActive){

             imgFrame.origin.x -=accelerometerData.acceleration.y*8.0 ;

             if(!CGRectContainsRect(self.view.bounds, imgFrame))
                 imgFrame.origin.x = _imageView.frame.origin.x;

             imgFrame.origin.y -=accelerometerData.acceleration.x *8.0;
             if(!CGRectContainsRect(self.view.bounds, imgFrame))
                 imgFrame.origin.y = _imageView.frame.origin.y;
             _imageView.frame = imgFrame;

         }
         else{
             imgFrame.origin.x -=accelerometerData.acceleration.y*8.0 ;
             imgFrame.origin.y -=accelerometerData.acceleration.x *8.0;
             if(CGRectContainsRect(boundView.frame, _imageView.frame)){

                 _imgViewTemp.hidden=YES;
             }
             _imageView.frame=imgFrame;
             if ((_imageView.frame.origin.y>_bounderView.frame.size.height-_imageView.frame.size.height && _imageView.frame.origin.x>_bounderView.frame.size.width-_imageView.frame.size.width) ){
                 NSLog(@"-x hidden");
                 _imageView.frame=CGRectMake(_imageView.frame.origin.x, 0, _imageView.frame.size.width, _imageView.frame.size.height);
                 _imgViewTemp.frame=CGRectMake(_imgViewTemp.frame.origin.x, 0,_imageView.frame.size.width, _imageView.frame.size.height);
                 return ;
             }
             else if ((_imageView.frame.origin.y>_bounderView.frame.size.height-_imageView.frame.size.height && _imageView.frame.origin.x<0) ){
                 NSLog(@"-x hidden");
                 _imageView.frame=CGRectMake(_imageView.frame.origin.x, 0,_imageView.frame.size.width, _imageView.frame.size.height);
                 _imgViewTemp.frame=CGRectMake(_imgViewTemp.frame.origin.x, 0, _imageView.frame.size.width, _imageView.frame.size.height);
                 return ;
             }
             else if (_imageView.frame.origin.y<0 && _imageView.frame.origin.x>_bounderView.frame.size.width-_imageView.frame.size.width) {
                 _imageView.frame=CGRectMake(_imageView.frame.origin.x, _bounderView.frame.size.height-_imageView.frame.size.height,_imageView.frame.size.width, _imageView.frame.size.height);
                 _imgViewTemp.frame=CGRectMake(_imgViewTemp.frame.origin.x,_bounderView.frame.size.height-_imageView.frame.size.height,_imageView.frame.size.width, _imageView.frame.size.height);
                 return ;

             }else  if (_imageView.frame.origin.y<0 && _imageView.frame.origin.x<0) {
                 _imageView.frame=CGRectMake(_imageView.frame.origin.x, _bounderView.frame.size.height-_imageView.frame.size.height, _imageView.frame.size.width, _imageView.frame.size.height);
                 _imgViewTemp.frame=CGRectMake(_imgViewTemp.frame.origin.x,_bounderView.frame.size.height-_imageView.frame.size.height,_imageView.frame.size.width, _imageView.frame.size.height);
                 return ;
             }
             else if (imgFrame.origin.x<0) {
                 if (imgFrame.origin.x<-_imageView.frame.size.width) {
                     NSLog(@"less 70");
                     _imgViewTemp.hidden=YES;
                     _imageView.frame=_imgViewTemp.frame;
                 }else{
                     _imgViewTemp.hidden=NO;
                     _imgViewTemp.frame=CGRectMake(_bounderView.frame.size.width+imgFrame.origin.x, imgFrame.origin.y, _imageView.frame.size.width,  _imageView.frame.size.height);
                 }
             }
             else if (imgFrame.origin.x>_bounderView.frame.size.width-_imageView.frame.size.width){
                 if (imgFrame.origin.x>_bounderView.frame.size.width) {
                     _imgViewTemp.hidden=YES;
                     _imageView.frame=_imgViewTemp.frame;
                 }else{
                     _imgViewTemp.hidden=NO;
                     _imgViewTemp.frame=CGRectMake(-(_bounderView.frame.size.width-imgFrame.origin.x), imgFrame.origin.y, _imageView.frame.size.width,  _imageView.frame.size.height);
                 }
             }
             else if (imgFrame.origin.y<0){
                 if (imgFrame.origin.y<-_imageView.frame.size.height) {
                     _imgViewTemp.hidden=YES;
                     _imageView.frame=_imgViewTemp.frame;

                 }else{
                     _imgViewTemp.hidden=NO;
                     _imgViewTemp.frame=CGRectMake(imgFrame.origin.x,_bounderView.frame.size.height+imgFrame.origin.y, _imageView.frame.size.width,  _imageView.frame.size.height);
                 }
             }
             else if (imgFrame.origin.y>_bounderView.frame.size.height-imgFrame.size.height){
                 if (imgFrame.origin.y>_bounderView.frame.size.height) {
                     _imgViewTemp.hidden=YES;
                     _imageView.frame=_imgViewTemp.frame;
                 }else{
                     _imgViewTemp.hidden=NO;
                     _imgViewTemp.frame=CGRectMake(imgFrame.origin.x,-(_bounderView.frame.size.height-imgFrame.origin.y), _imageView.frame.size.width,  _imageView.frame.size.height);
                 }
             }

         }
      }];
   }
}

   NSTimer  *timer = [NSTimer scheduledTimerWithTimeInterval:0.004 target:self selector:@selector(timerFired:) userInfo:nil repeats:YES];
  [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];


 -(void)timerFired:(NSTimer *)timerData{

          UIImageView *imgView=_imageView;//firstimage
          NSInteger Xpos=imgView.frame.origin.x;
          NSInteger Ypos=imgView.frame.origin.y;
         if (movingPostion==Left) {
           Xpos-=1;
          }
         if (movingPostion==Right) {
           Xpos+=1;
          }
         if (movingPostion==Up) {
           Ypos-=1;
          }
         if (movingPostion==Down) {
           Ypos+=1;
      }

        imgView.frame =  CGRectMake(Xpos, Ypos, _imageView.frame.size.width, _imageView.frame.size.height);
        CGRect imgFrame = imgView.frame;
    _imageView.frame=imgFrame;
        if ((imgFrame.origin.y<0 && imgFrame.origin.x<0) || (imgFrame.origin.y<0 && imgFrame.origin.x>_bounderView.frame.size.width-_imageView.frame.size.width)) {
        imgFrame.origin.y=_bounderView.frame.size.height+imgFrame.origin.y;
        _imageView.frame=imgFrame;
        return;
    }else if((imgFrame.origin.y >_bounderView.frame.size.height && imgFrame.origin.x<0 ) || (imgFrame.origin.y>_bounderView.frame.size.height && imgFrame.origin.x>_bounderView.frame.size.width)){
        imgFrame.origin.y=-(_bounderView.frame.size.height-imgFrame.origin.y);
        _imageView.frame=imgFrame;
        return;
    }
    else if (imgFrame.origin.x<0 ) {
        if (imgFrame.origin.x<-_imageView.frame.size.width) {
            _imgViewTemp.hidden=YES;
            _imageView.frame=_imgViewTemp.frame;
        }else{
            _imgViewTemp.hidden=NO;
            _imgViewTemp.frame=CGRectMake(_bounderView.frame.size.width+imgFrame.origin.x, imgFrame.origin.y, _imageView.frame.size.width,  _imageView.frame.size.height);
        }
    }
    else if (imgFrame.origin.x>_bounderView.frame.size.width-_imageView.frame.size.width){
        if (imgFrame.origin.x>_bounderView.frame.size.width) {
            _imgViewTemp.hidden=YES;
            _imageView.frame=_imgViewTemp.frame;
        }else{
            _imgViewTemp.hidden=NO;
            _imgViewTemp.frame=CGRectMake(-(_bounderView.frame.size.width-imgFrame.origin.x), imgFrame.origin.y, _imageView.frame.size.width,  _imageView.frame.size.height);
        }
    }
    else if (imgFrame.origin.y<0){

        if (imgFrame.origin.y<-_imageView.frame.size.height) {
            _imgViewTemp.hidden=YES;
            _imageView.frame=_imgViewTemp.frame;

        }else{
            _imgViewTemp.hidden=NO;
            _imgViewTemp.frame=CGRectMake(imgFrame.origin.x,_bounderView.frame.size.height+imgFrame.origin.y, _imageView.frame.size.width,  _imageView.frame.size.height);
        }
    }
    else if (imgFrame.origin.y>_bounderView.frame.size.height-imgFrame.size.height ){
        if (imgFrame.origin.y>_bounderView.frame.size.height) {
            _imgViewTemp.hidden=YES;
            _imageView.frame=_imgViewTemp.frame;
        }else{
            _imgViewTemp.hidden=NO;
            _imgViewTemp.frame=CGRectMake(imgFrame.origin.x,-(_bounderView.frame.size.height-imgFrame.origin.y), _imageView.frame.size.width,  _imageView.frame.size.height);
        }


}
0

Source: https://habr.com/ru/post/1543204/


All Articles