点击全屏显示图片

3

我正在制作一个应用程序,其中一个元素是一个ViewController,向用户展示一张图片缩略图和一些细节。我希望的效果是当用户点击图片时,它可以全屏显示其原始大小(无论是纵向还是横向)。当用户再次点击时,它将把图像缩小回缩略图。

目前,我已经实现了点击功能,可以在点击时全屏显示并在再次点击时最小化图像,但存在一些问题。

它似乎会过度拉伸图片,如果是横向图片,它仍会强制拉伸为纵向。此外,缩略图位于UIScrollView中,因此当缩放图像时,有时不会将其居中,您仍然可以滚动,当其全屏显示时。请问我该怎么做才能解决这些问题呢?如果Twitter应用程序对您有所帮助,我希望它能与该应用程序类似。我对iOS开发也比较新手。

以下是执行点击操作的代码:

-(IBAction)tap:(id)sender {

    //goto new ViewController and set the image

    if (!isFullScreen) {
        [UIView animateWithDuration:0.5 delay:0 options:0 animations:^{
            //save previous frame
            prevFrame = _imageView.frame;            
            [_imageView setFrame:[[UIScreen mainScreen] bounds]];
        }completion:^(BOOL finished){
            isFullScreen = TRUE;
        }];
        return;
    } else {
        [UIView animateWithDuration:0.5 delay:0 options:0 animations:^{
            [_imageView setFrame:prevFrame];
        } completion:^(BOOL finished){
            isFullScreen = FALSE;
        }];
        return;
    }
}

1
最好以模态方式呈现视图控制器,而不是更改现有图像视图的框架。 - Léo Natan
谢谢你的建议,Leo。我会采纳并尝试一下。听起来比我原来想做的更好。感谢你的建议!谢谢! - Stephen Bennett
1
一个简单的视图控制器,带有一个图像视图,并将点击的图像视图的图像分配给模态视图控制器的图像视图的图像。 - Léo Natan
2个回答

3
尝试将imageView.contentMode = UIViewContentModeScaleAspectFit;放在您初始化图像视图的任何位置。

非常感谢,这解决了我的拉伸问题!至于将图像居中并使其类似于Twitter应用程序,我想我会采纳Leo的建议,并以模态方式呈现视图控制器。感谢您的帮助! - Stephen Bennett
@StephenBennett 很高兴我能帮到你! - Milo

1
为了解决拉伸问题,我使用了Milo提供的方法:

imageView.contentMode = UIViewContentModeScaleAspectFit;

至于居中和全屏显示图像的整体方法,我采用了Leo的建议,并使用视图控制器模态方式。

谢谢大家!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接