繁体   English   中英

从UITableViewCell内将UIImageView展开为全屏

[英]Expand UIImageView to full screen from within UITableViewCell

我在UITableViewCell有一个UIImageView ,并且想要扩展它以填充全屏,我已经设置了UIGestureRecognizer并且正在使用以下代码扩展框架:

[UIView animateWithDuration:1.0 animations:^{
        [self.ImageView setFrame:[[UIScreen mainScreen] applicationFrame]];
}];

但是, UIImageView将仅展开以填充UITableViewCell而不会填充全屏。

任何帮助将非常感激。

单元格clipsToBounds设置为“是”,因此在单元格边界之外的视图将不可见

以下方法将帮助您将单元格中的图像获取到全屏,然后将其返回到同一位置。

您需要将gestureRecognizer添加到imageView并将选择器设置为cellImageTapped

声明UIImageView * temptumb,fullview; 作为实例变量。

- (void)cellImageTapped:(UIGestureRecognizer *)gestureRecognizer {
    NSLog(@"%@", [gestureRecognizer view]);
    //create new image
    temptumb=(UIImageView *)gestureRecognizer.view;
    //temptumb=thumbnail;
    fullview=[[UIImageView alloc]init];
      [fullview setContentMode:UIViewContentModeScaleAspectFit];
    fullview.image = [(UIImageView *)gestureRecognizer.view image];
        CGRect point=[self.view convertRect:gestureRecognizer.view.bounds fromView:gestureRecognizer.view];
    [fullview setFrame:point];

    [self.view addSubview:fullview];

    [UIView animateWithDuration:0.5
                     animations:^{
                         [fullview setFrame:CGRectMake(0,
                                                       0,
                                                       self.view.bounds.size.width,
                                                       self.view.bounds.size.height)];
                     }];
    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(fullimagetapped:)];
    singleTap.numberOfTapsRequired = 1;
    singleTap.numberOfTouchesRequired = 1;
    [fullview addGestureRecognizer:singleTap];
    [fullview setUserInteractionEnabled:YES];
}
- (void)fullimagetapped:(UIGestureRecognizer *)gestureRecognizer {

    CGRect point=[self.view convertRect:temptumb.bounds fromView:temptumb];

    gestureRecognizer.view.backgroundColor=[UIColor clearColor];
    [UIView animateWithDuration:0.5
                     animations:^{
                         [(UIImageView *)gestureRecognizer.view setFrame:point];
                     }];
    [self performSelector:@selector(animationDone:) withObject:[gestureRecognizer view] afterDelay:0.4];

}

-(void)animationDone:(UIView  *)view
{
    [fullview removeFromSuperview];
    fullview=nil;
}

UITableViewCell仅在reloaddatareloadRowsAtIndexPaths:withRowAnimation时扩展,否则它不会更改表的大小,只需在self.view中添加UIImageView并隐藏图像视图,在关闭全视图时点按单元格图像以在隐藏图像视图后更改图像视图图像即可

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM