MWPhotoBrowser@Tony 0.0.2

MWPhotoBrowser@Tony 0.0.2

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最新发布2014年12月

维护者 未指明.



 
依赖
SDWebImage< 3.0.0
MBProgressHUD>= 0
 

  • 作者
  • 张宗辉

MWPhotoBrowser — 一个简单的 iOS 图片浏览器

注意:这是一个从 mwaterfall/MWPhotoBrowser 分支出来的。这个分支进行了修改,使得图片浏览器的界面可以根据需要进行自定义(导航栏颜色/图像、工具栏颜色/图像、背景颜色)。

New methods added are:

    - (void)changeNavigationBarTintColor:(UIColor *)color;
    - (void)changeNavigationBarBackgroundImage:(UIImage *)image;
    - (void)changeBackgroundColor:(UIColor *)color;
    - (void)changeToolbarTintColor:(UIColor *)color;
    - (void)changeToolbarBackgroundImage:(UIImage *)image;

Usage:

    MWPhotoBrowser *browser = [[MWPhotoBrowser alloc] initWithDelegate:self];
    browser.displayActionButton = YES;
    [browser changeNavigationBarTintColor:[UIColor redColor]];
    [browser changeToolbarTintColor:[UIColor redColor]];

    [self.navigationController pushViewController:browser animated:YES];

MWPhotoBrowser 是一个类似于 iOS 上原生物理图片应用的图片浏览器实现。它可以通过提供 UIImage 对象、设备上图片的文件路径或在网络上的图片 URL 来显示一个或多个图片。图片浏览器无缝处理从网络下载和缓存图片。图片可以缩放和滚动,并可选择性地显示(可定制的)标题。适用于 iOS 3.2+。所有字符串都进行了本地化,因此它们可以用在支持多语言的应用中。

Alt    Alt    Alt    Alt

用法

MWPhotoBrowser 被设计用于在导航控制器中显示。只需设置代理(必须符合 MWPhotoBrowserDelegate)并实现所需的 2 个代理方法,向图片浏览器提供 MWPhoto 对象的数据。您可以通过提供 UIImage 对象、物理图片文件的路径或在线图片的 URL 来创建 MWPhoto 对象。

MWPhoto 对象处理缓存、文件管理、网络图片下载以及各种优化。不过,如果你想使用自己的数据模型来表示照片,你可以简单确保你的模型符合 MWPhoto 协议。然后,你可以自己处理缓存、下载等管理。更多相关信息可以在 MWPhotoProtocol.h 中找到。

下面是一个代码片段示例,展示了如何实现照片浏览器。项目内还有一个简单的演示应用程序。

// Create array of `MWPhoto` objects
self.photos = [NSMutableArray array];
[photos addObject:[MWPhoto photoWithFilePath:[[NSBundle mainBundle] pathForResource:@"photo2l" ofType:@"jpg"]]];
[photos addObject:[MWPhoto photoWithURL:[NSURL URLWithString:@"http://farm4.static.flickr.com/3629/3339128908_7aecabc34b.jpg"]]];
[photos addObject:[MWPhoto photoWithURL:[NSURL URLWithString:@"http://farm4.static.flickr.com/3590/3329114220_5fbc5bc92b.jpg"]]];

// Create & present browser
MWPhotoBrowser *browser = [[MWPhotoBrowser alloc] initWithDelegate:self];
// Set options
browser.wantsFullScreenLayout = YES; // Decide if you want the photo browser full screen, i.e. whether the status bar is affected (defaults to YES)
browser.displayActionButton = YES; // Show action button to save, copy or email photos (defaults to NO)
[browser setInitialPageIndex:1]; // Example: allows second image to be presented first
// Present
[self.navigationController pushViewController:browser animated:YES];

然后响应所需代理方法

- (NSUInteger)numberOfPhotosInPhotoBrowser:(MWPhotoBrowser *)photoBrowser {
    return self.photos.count;
}

- (MWPhoto *)photoBrowser:(MWPhotoBrowser *)photoBrowser photoAtIndex:(NSUInteger)index {
    if (index < self.photos.count)
        return [self.photos objectAtIndex:index];
    return nil;
}

只需将照片浏览器包裹在一个新的导航控制器中,然后展示即可以模态方式呈现。演示应用程序允许你在两种展示类型之间切换。

如果你不希望全屏查看照片浏览器(例如,如果你在 iOS 5 中使用视图控制器包容),请将照片浏览器的 wantsFullScreenLayout 属性设置为 NO。这意味着状态栏将不受照片浏览器的影响。

照片标题

只需在特定照片上设置 caption 属性即可显示照片标题

MWPhoto *photo = [MWPhoto photoWithFilePath:[[NSBundle mainBundle] pathForResource:@"photo2l" ofType:@"jpg"]];
photo.caption = @"Campervan";

如果没有设置标题属性,则不会显示标题。

自定义标题

默认情况下,标题是一个简单的黑色半透明视图,其中有一个标签以白色显示照片的标题。如果你想实现自己的标题视图,请按照以下步骤操作

  1. 可选地,使用 MWPhoto 的子类来存储你的照片,这样你就可以存储比简单的标题字符串更多的数据。
  2. 继承 MWCaptionView 并覆盖 -setupCaption-sizeThatFits:(以及任何其他适合的UIView方法)来布局你的视图并设置其大小。更多相关信息可以在 MWCaptionView.h 中找到
  3. 实现 -photoBrowser:captionViewForPhotoAtIndex: MWPhotoBrowser 代理方法(如下所述)。

自定义标题视图的代理方法示例

- (MWCaptionView *)photoBrowser:(MWPhotoBrowser *)photoBrowser captionViewForPhotoAtIndex:(NSUInteger)index {
    MWPhoto *photo = [self.photos objectAtIndex:index];
    MyMWCaptionViewSubclass *captionView = [[MyMWCaptionViewSubclass alloc] initWithPhoto:photo];
    return [captionView autorelease];
}

添加到你的项目(Xcode 4)

方法 1:静态库

  1. 您可以通过 将其作为 zip 文件下载 或通过从 git://github.com/mwaterfall/MWPhotoBrowser.git 克隆仓库并将其存储在您希望的位置来获取最新源代码。
  2. 在导航器中右击您的项目,单击“将文件添加到‘您的项目’”,然后浏览并选择“MWPhotoBrowser.xcodeproj”
  3. 在您的项目目标设置中,转到“构建 phases” --> “链接二进制与库”,并添加 libMWPhotoBrowser.a
  4. 仍然在“构建 phases”中,展开“复制 Bundle 资源”,并将 MWPhotoBrowser.bundle 文件从 MWPhotoBrowser 项目拖动到该列表中。这确保您的项目将包括照片浏览器正确工作的所需图形。
  5. 在目标中,选择“构建设置”选项卡,确保“始终搜索用户路径”设置为 YES,并将“用户头文件搜索路径”设置为递归绝对或相对路径。在该文件的 MWPhotoBrowser 项目的布局中,简单的 ../** 就像演示项目文件夹和 MWPhotoBrowser 项目文件夹相邻一样。如果您遇到任何问题,请通知我。
  6. 在“摘要”中添加 MessageUI.frameworkImageIO.framework 到“链接框架和库”。

现在您应该可以将 MWPhotoBrowser.h 添加到您的项目,并开始使用它。

在Xcode 4中配置这些项可能有些棘手,所以如果您遇到任何问题,可能需要阅读一些相关信息。

方法2:直接将源代码包含到您的项目中

另一种方法是简单地将文件添加到您的Xcode项目中,如果需要,将其复制到项目目录。请确保将位于 MWPhotoBrowser/ClassesMWPhotoBrowser/LibrariesMWPhotoBrowser.bundle 的所有代码包含到您的项目中。

如果您的项目使用ARC,那么您将为MWPhotoBrowser中的每个文件禁用ARC。下面是如何操作的: http://stackoverflow.com/a/6658549/106244

待解决的问题和改进

没有待解决问题。

注释和认可

MWPhotoBrowser非常感激地利用了两个其他的出色开源项目

  • SDWebImage by Olivier Poitrey — 用于处理从网络下载和解压缩照片。
  • MBProgressHUD by Jonathan George — 用于显示照片保存和复制进度/完成的提示。

演示照片由Oliver Waters(http://twitter.com/oliverwaters)提供。

许可证

版权所有(c)2010 Michael Waterfall

特此授予任何人获得本软件及其相关文档文件(“软件”)副本的权利,免费处理该软件而不受限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,许可将软件提供给他人,以便他们可以进行此类操作,但受以下条件约束:

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

该软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适用性保证、特定用途保证和不侵权保证。在任何情况下,无论出于何种原因、侵权责任或其他责任,作者或版权所有者不应对任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他原因,无论该损害或责任是由软件或其使用或其它原因造成的。