jac*_*iet 3 xcode objective-c storyboard ios
我正在制作iOS聊天应用.我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//
}
Run Code Online (Sandbox Code Playgroud)
使用这些代码,它只显示图像.
我知道这不是推荐或理想的方式,但这是我暂时做的.当我找到一个好方法时,我可能会回到它并且"正确地"做到这一点.
对于每个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];
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望这可以帮助你至少取得一些进展.
| 归档时间: |
|
| 查看次数: |
493 次 |
| 最近记录: |