点击UIImageView时会出现选项

时间:2013-02-27 04:14:41

标签: ios menu uiimageview uitabbar tap

在Apple iOs照片应用中,每张照片都采用全屏显示,但当您点按它时,navigation bartab bar会显示一些菜单选项(如共享照片),并保留给一对秒。我怎样才能在我的UIImageView

中执行此操作

1 个答案:

答案 0 :(得分:1)

在您的视图中添加UITapGestureRecognizer,在顶栏和底栏中添加UiView或您喜欢的其他内容,并按照以下代码添加。我想这可能对你有帮助。

//在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方法

- (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;


}

//手势代表

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{

    return YES;
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;

}