2013-04-25 61 views
3

我正在製作iOS聊天應用程序。我使用UIBubbleTableView來顯示文字和圖像。圖像內部UIBubbleTableView

現在,我希望圖像可以點擊,它會移動到另一個視圖(人們可以看到它的全尺寸)。但UIBubbleTableView似乎不支持它,所以我如何解決它?

這是我在viewDidLoad中代碼:

- (void)viewDidLoad 
{ 
    //Something here// 
    [super viewDidLoad]; 
    NSBubbleData *photoBubble = [NSBubbleData dataWithImage:[UIImage   
    imageNamed:@"halloween.jpg"] date:[NSDate dateWithTimeIntervalSinceNow:-290]  
    type:BubbleTypeSomeoneElse]; 
    //something else here// 
} 

有了這些代碼,它只是顯示了圖像。

+0

您是否試圖將UIImage添加到UIBubbleTableView的單元格中,或者您試圖在另一個視圖中打開UIImage以全尺寸查看它? – zakhej 2013-04-25 13:34:39

+0

@zakhej我試圖在另一個視圖中打開UIImage以全尺寸查看它。它喜歡Apple Message App:D。 – jackiviet 2013-04-25 14:39:19

+0

你現在有什麼?發佈有問題的代碼。 – zakhej 2013-04-25 14:49:06

回答

5

我知道這不是推薦或理想的方法,但這是我目前所做的。當我找到一個好方法時,我可能會回過頭去「正確地」做。

對於每個NSBubbleData對象,我向其視圖添加一個觸摸手勢。當用戶觸摸時,將調用touchEventOnImage:方法。從發件人,你可以得到手勢識別器,其視圖是由NSBubbleData設置的UIImageView。您可以全屏顯示此圖像。

這是我使用的代碼:

- (void)addTouchGestureToBubble:(NSBubbleData *)oBubbleData 
{ 
    UITapGestureRecognizer * tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(touchEventOnImage:)]; 
    [tapRecognizer setNumberOfTouchesRequired:1]; 
    //Don't forget to set the userInteractionEnabled to YES, by default It's NO. 
    oBubbleData.view.userInteractionEnabled = YES; 
    [oBubbleData.view addGestureRecognizer:tapRecognizer]; 
} 

- (void)touchEventOnImage:(id)sender 
{ 
    if([sender isKindOfClass:[UIGestureRecognizer class]]) 
    { 
     UIGestureRecognizer * recognizer = (UIGestureRecognizer *)sender; 

     if([recognizer.view isKindOfClass:[UIImageView class]]) 
     { 
      UIImageView * imageView = [[UIImageView alloc] initWithImage:((UIImageView *)recognizer.view).image]; 
      imageView.contentMode = UIViewContentModeScaleAspectFit; 
      imageView.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height); 
      imageView.backgroundColor = [UIColor blackColor]; 
      // Remove the corner radius applied in the NSBubbleData class. 
      imageView.layer.cornerRadius = 0.0; 

      UIViewController * vc = [[UIViewController alloc] init]; 
      vc.view = imageView; 
      [self.navigationController pushViewController:vc animated:YES]; 
     } 
    } 
} 

我希望這有助於你至少取得一些進展。

+0

作品!如果將它集成到UIBubbleTableViewDelegate中,它會不會更好,更乾淨?我從https://github.com/curioushq/UIBubbleTableView使用for – Klemens 2014-04-25 14:08:35