如何在我的viewController中显示我的图像与下面的屏幕截图相同?

Chr*_*ina 2 xcode objective-c photolibrary ipad ios

在我的iPad程序中,我有一个包含图像的数组.如何在viewController中显示我的所有图像(来自图像数组),与下面的屏幕截图相同?有没有一个好的方法来做,任何示例应用程序路径来引用或示例代码?

我需要以下功能.

  1. 点击图像将全屏显示
  2. 关闭此视图的关闭按钮与屏幕截图相同.
  3. 两个按钮显示剩余和以前的图像.

下面附有一个屏幕截图.我们可以看到下面的应用程序显示屏幕右侧的所有图像.

在此输入图像描述

Nic*_*ver 31

好吧,这应该很容易,虽然需要一些编码.从基于简单视图的应用模板开始.

我不知道图像来自哪里,所以我只是将所有图像显示在资源文件夹中.

视图控制器PictureViewController将接受一组UIImages,并应以模态方式呈现.我将在下面发布代码.

显示的代码PictureViewController放置在模板创建的视图控制器中.我刚刚在视图中添加了一个简单的UIButton来触发一个看起来像这样的动作:

- (IBAction)onShowPictures
{
    // Load all images from the bundle, I added 14 images, named 01.jpg ... 14.jpg
    NSMutableArray *images = [NSMutableArray array];
    for (int i = 1; i <= 14; i++) {
        [images addObject:[UIImage imageNamed:[NSString stringWithFormat:@"%02d.jpg", i]]];
    }

    PictureViewController *picViewController = [[PictureViewController alloc] initWithImages:images];

    [self presentModalViewController:picViewController animated:YES];

    [picViewController release];
}
Run Code Online (Sandbox Code Playgroud)

视图控制器的视图是使用界面构建器创建的,如下所示:

PictureViewController.xib

在此输入图像描述

查看层次结构

在此输入图像描述

全屏图像链接到fullScreenImage以下头文件中显示的插座.行动也是连通的.

我已将全屏imageView的内容模式设置为Aspect Fit.

将使用代码动态添加缩略图.这是视图控制器的代码

PictureViewController.h

@interface PictureViewController : UIViewController 
{
    NSMutableArray *imageViews;

    NSArray *images;

    UIImageView *fullScreenImage;

    int currentPage;
}

@property (nonatomic, retain) NSMutableArray *imageViews;
@property (nonatomic, retain) NSArray *images;
@property (nonatomic, retain) IBOutlet UIImageView *fullScreenImage;

- (id)initWithImages:(NSArray *)images;

- (IBAction)onClose;
- (IBAction)onNextThumbnails;
- (IBAction)onPreviousThumbnails;

@end
Run Code Online (Sandbox Code Playgroud)

PictureViewController.m

MAX_THUMBNAILS顶部的define 定义了所看到的缩略图的最大值.A UITapGestureRecognizer将处理缩略图的点击事件.调整CGRectMakein setupThumbnailImageViews以根据需要定位缩略图.该控制器只是一种没有方向支持的基本方法.

#import "PictureViewController.h"

#define MAX_THUMBNAILS 6

@interface PictureViewController ()

- (void)showSelectedImageFullscreen:(UITapGestureRecognizer *)gestureRecognizer;
- (void)setupThumbnailImageViews;
- (void)setThumbnailsForPage:(int)aPage;
- (UIImage *)imageForIndex:(int)anIndex;

@end


@implementation PictureViewController

@synthesize imageViews, images, fullScreenImage;


- (id)initWithImages:(NSArray *)someImages
{
    self = [super init];
    if (self) {
        self.images = someImages;
        self.imageViews = [NSMutableArray array];
        currentPage = 0;
    }
    return self;
}

- (void)viewDidLoad
{
    self.fullScreenImage.image = [images objectAtIndex:0];
    [self setupThumbnailImageViews];
    [self setThumbnailsForPage:0];
}

- (void)showSelectedImageFullscreen:(UITapGestureRecognizer *)gestureRecognizer
{
    UIImageView *tappedImageView = (UIImageView *)[gestureRecognizer view];

    fullScreenImage.image = tappedImageView.image;
}

- (void)setupThumbnailImageViews
{
    for (int i = 0; i < MAX_THUMBNAILS; i++) {
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(20.0, 
                                                                               166.0 + (130.0 * i), 
                                                                               130.0, 
                                                                               90.0)];

        UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self 
                                                                                               action:@selector(showSelectedImageFullscreen:)];
        tapGestureRecognizer.numberOfTapsRequired = 1;
        tapGestureRecognizer.numberOfTouchesRequired = 1;
        [imageView addGestureRecognizer:tapGestureRecognizer];
        [tapGestureRecognizer release];

        imageView.userInteractionEnabled = YES;

        [imageViews addObject:imageView];
        [self.view addSubview:imageView];
    }
}

- (void)setThumbnailsForPage:(int)aPage
{
    for (int i = 0; i < MAX_THUMBNAILS; i++) {
        UIImageView *imageView = (UIImageView *)[imageViews objectAtIndex:i];
        UIImage *image = [self imageForIndex:aPage * MAX_THUMBNAILS + i];

        if (image) {
            imageView.image = image;
            imageView.hidden = NO;          
        } else {
            imageView.hidden = YES;
        }
    }
}

- (UIImage *)imageForIndex:(int)anIndex
{
    if (anIndex < [images count]) {
        return [images objectAtIndex:anIndex];
    } else {
        return nil;
    }
}


#pragma mark -
#pragma mark user interface interaction

- (IBAction)onClose
{
    [self dismissModalViewControllerAnimated:YES];
}

- (IBAction)onNextThumbnails
{
    if (currentPage + 1 <= [images count] / MAX_THUMBNAILS) {
        currentPage++;
        [self setThumbnailsForPage:currentPage];
    }
}

- (IBAction)onPreviousThumbnails
{
    if (currentPage - 1 >= 0) {
        currentPage--;  
        [self setThumbnailsForPage:currentPage];    
    }
}


#pragma mark -
#pragma mark memory management

- (void)didReceiveMemoryWarning 
{
    [super didReceiveMemoryWarning];

    [images release];   
}

- (void)viewDidUnload 
{
    [super viewDidUnload];

    [imageViews release];   
    [fullScreenImage release];
}

- (void)dealloc 
{
    [images release];
    [imageViews release];   
    [fullScreenImage release];

    [super dealloc];
}

@end
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述

  • +1做另一个用户的作业,漂亮的个人资料照片? (15认同)