2014-09-13 3 views
0

У меня есть uiimageview в моем подробном представлении, и я хочу сделать так, чтобы при нажатии на изображение открывается полноэкранное изображение. Однако мой код ниже не работает. Любая идея, что я, кажется, делаю неправильно?Tap imageView для просмотра полноэкранного изображения

FullViewController.h

@interface FullArticleViewController : UIViewController <UINavigationControllerDelegate, UIImagePickerControllerDelegate, UIGestureRecognizerDelegate> 


    { 
     IBOutlet UITapGestureRecognizer *tap; 
     IBOutlet UIScrollView *scroller; 
     IBOutlet UILabel *firstnameLabel; 
     IBOutlet UILabel *bodyLabel; 
     IBOutlet UILabel *descriptionLabel; 


     BOOL isFullScreen; 
     CGRect prevFrame;   
    } 

FullViewController.m

- (void)viewDidLoad 
    { 

     [super viewDidLoad]; 
     // Do any additional setup after loading the view from its nib. 

      if ([[articleDetail objectForKey:@"ytID"] isEqualToString:@"none"]) { 

      featureImage.userInteractionEnabled = YES; 

      NSString *imageUrl = [NSString stringWithFormat:@"image/%@",cellImageLink]; 

      [self.featureImage sd_setImageWithURL:[NSURL URLWithString:imageUrl]]; 

      [scroller setScrollEnabled:YES]; 

      featureImage.userInteractionEnabled = YES; 

      [scroller bringSubviewToFront:featureImage]; 

     UITapGestureRecognizer *tapgesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imgToFullScreen)]; 
     [tapgesture setNumberOfTapsRequired:1]; 

     [featureImage addGestureRecognizer:tap]; 

    } 

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

     if (gestureRecognizer == tap) { 
      shouldReceiveTouch = (touch.view == featureImage); 
     } 
     return shouldReceiveTouch; 
    } 

    -(void)imgToFullScreen{ 
     if (!isFullScreen) { 
      [UIView animateWithDuration:0.5 delay:0 options:0 animations:^{ 
       //save previous frame 
       prevFrame = featureImage.frame; 
       [featureImage setFrame:[[UIScreen mainScreen] bounds]]; 
      }completion:^(BOOL finished){ 
       isFullScreen = true; 
      }]; 
      return; 
     } else { 
      [UIView animateWithDuration:0.5 delay:0 options:0 animations:^{ 
       [featureImage setFrame:prevFrame]; 
      }completion:^(BOOL finished){ 
       isFullScreen = false; 
      }]; 
      return; 
     } 
    } 

Edit: Смотрите код обновляется выше, и иерархии ниже

enter image description here

+0

@rdelmar Да, я сделал. – Brittany

+0

Какой результат вы получаете с помощью этого кода? Он ничего не делает? – rdelmar

+0

@rdelmar Исправить; он просто ничего не делает. – Brittany

ответ

1

Попробуйте это в методе viewDidLoad::

[featureImage setUserInteractionEnables:YES]; 

UITapGestureRecognizer *tapgesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imgToFullScreen)]; 
[tapgesture setNumberOfTapsRequired:1]; 
[featureImage addGestureRecognizer:tapgesture]; 
+0

Эта половина работает; лол. Когда я добавляю этот код в viewDidLoad и запускаю приложение, нажатие на изображение позволяет сделать изображение в полноэкранном режиме, однако оно выходит за полноэкранный режим за весь текст в представлении (так что похоже, что он просто устанавливает воспроизводимое изображение в качестве фона). Также: изображение горизонтально, и оно растягивается вертикально. Как я могу сделать так, чтобы изображение отображалось в полноэкранном режиме поверх всего содержимого? – Brittany

+1

Используйте '[self.view bringSubviewToFront: featureImage];' перед анимацией в полноэкранном режиме. – freshking

+0

Не работает ...:/ – Brittany

Смежные вопросы