Search code examples
iosmenuuiimageviewuitabbartap

Options appear when tap on UIImageView


In Apple iOs photos app, Each picture take the full screen, but when You tap on it, navigation bar and tab bar with some menu options (like share picture) just appear and remain for a couple of secconds. How can I do that in my UIImageView ?


Solution

  • Add a UITapGestureRecognizer to your view and UiView for your topbar and bottom bar or what else you like and follow below code. I think This may help you.

    //Write below code in ViewDidLoad

    UITapGestureRecognizer *singleTapOne = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
        singleTapOne.numberOfTouchesRequired = 1; singleTapOne.numberOfTapsRequired = 1; singleTapOne.delegate = self;
    
    
        [self.view addGestureRecognizer:singleTapOne]; [singleTapOne release];
        for (UIGestureRecognizer *gR in self.view.gestureRecognizers) {
            gR.delegate = self;
    

    // handleSingleTap Method

    - (void)handleSingleTap:(UITapGestureRecognizer *)recognizer
    {
    
    
    
    
        if (recognizer.state == UIGestureRecognizerStateRecognized)
        {
            CGRect viewRect = recognizer.view.bounds; // View bounds
    
            CGPoint point = [recognizer locationInView:recognizer.view];
    
            CGRect areaRect = CGRectInset(viewRect, TAP_AREA_SIZE, 0.0f); // Area
    
            if (CGRectContainsPoint(areaRect, point)) // Single tap is inside the area
            {
    
    
                if ((m_CtrlViewTopBar.hidden == YES) || (m_CtrlViewBottomBar.hidden == YES))
                {
                    [self showToolbar:m_CtrlViewTopBar];
                    [self showToolbar:m_CtrlViewBottomBar]; // Show
                }
                else
                {
                    [self hideToolbar:m_CtrlViewTopBar];
                    [self hideToolbar:m_CtrlViewBottomBar];
                }
    
    
                return;
            }
    
            CGRect nextPageRect = viewRect;
            nextPageRect.size.width = TAP_AREA_SIZE;
            nextPageRect.origin.x = (viewRect.size.width - TAP_AREA_SIZE);
    
            if (CGRectContainsPoint(nextPageRect, point)) // page++ area
            {
                //[self incrementPageNumber]; return;
            }
    
            CGRect prevPageRect = viewRect;
            prevPageRect.size.width = TAP_AREA_SIZE;
    
            if (CGRectContainsPoint(prevPageRect, point)) // page-- area
            {
                //[self decrementPageNumber]; return;
            }
        }
    
    }
    
    - (void)hideToolbar:(UIView*)view  //Hide Toolbars
    {
    
    #ifdef DEBUGX
        NSLog(@"%s", __FUNCTION__);
    #endif
    
        if (view.hidden == NO)
        {
            [UIView animateWithDuration:0.25 delay:0.0
                                options:UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction
                             animations:^(void)
             {
                 view.alpha = 0.0f;
             }
                             completion:^(BOOL finished)
             {
                 view.hidden = YES;
             }
             ];
        }
        [timer invalidate];
        timer=nil;
    }
    - (void)showToolbar:(UIView*)view  //Show Toolbars
    {
    #ifdef DEBUGX
        NSLog(@"%s", __FUNCTION__);
    #endif
    
        if (view.hidden == YES)
        {
    
    
            [UIView animateWithDuration:0.25 delay:0.0
                                options:UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction
                             animations:^(void)
             {
                 view.hidden = NO;
                 view.alpha = 1.0f;
             }
                             completion:NULL
             ];
            if (!timer) {
                timer=[NSTimer scheduledTimerWithTimeInterval:5
                                                       target:self
                                                     selector:@selector(HideToolBarWithTime)
                                                     userInfo:nil
                                                      repeats:YES];
            }
    
        }
        [self.view addSubview:view];
    }
    -(void)HideToolBarWithTime   //Hide Toolbars with time
    {
    
    
            [self hideToolbar:m_CtrlViewTopBar];
            [self hideToolbar:m_CtrlViewBottomBar];
            [timer invalidate];
            timer=nil;
    
    
    }
    

    // Gesture Delegates

    -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
    {
    
        return YES;
    }
    
    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
    {
        return YES;
    
    }