测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | MIT |
发布最后发布 | 2016年3月 |
由 Nicholas Shipes 维护。
URBMediaFocusViewController
是一个实验,旨在使用从 iOS 7 开始可用的 UIDynamics API 重现 Tweetbot 3 中用于放大照片和视频的查看器视图。
要运行示例项目,请克隆存储库,打开 URBMediaFocusViewControllerDemo.xcodeproject
并运行 URBMediaFocusViewControllerDemo 目标。
URBMediaFocusViewController 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod "URBMediaFocusViewController"
要创建 URBMediaFocusViewController
的实例,只需以与创建 UIViewController
相同的方式实例化,或者简单地使用 init
self.mediaFocusController = [[URBMediaFocusViewController alloc] init];
/* ...or... */
self.mediaFocusController = [[URBMediaFocusViewController alloc] initWithNibName:nil bundle:nil];
URBMediaFocusViewController
的标准用法是用于在现有视图上显示全尺寸照片。在大多数情况下,您会从您想要显示放大版本的图像的小缩略图视图中使用它。您可以显示项目内部已经存在的本地照片,或者使用 NSURLConnection
异步地从远程 URL 加载全尺寸图像。
标准方法是首先加载数据库中的小尺寸缩略图图像,然后在显示媒体焦点视图时请求它们的完整尺寸
NSURL *url = [NSURL URLWithString:@"http://apollo.urban10.net/random/oiab/01.jpg"];
[self.mediaFocusController showImageFromURL:url fromView:self.thumbnailView];
以下是显示项目中链接的本地图像的基本示例
[self.mediaFocusController showImage:[UIImage imageNamed:@"seattle01.jpg"] fromView:self.thumbnailView];
在大多数情况下,您会从应用的主窗口中显示 URBMediaFocusViewController
,这是默认实现。然而,在有些情况下,您可能想从一个特定的视图控制器中显示您的 URBMediaFocusViewController
视图。在这些情况下,您可以使用父视图控制器,并将 URBMediaFocusViewController
实例添加到该控制器的视图上方。
[self.mediaFocusController showImageFromURL:url fromView:self.thubmnailView inViewController:self];
组件将自动检测加载的远程图像是否为 GIF,并在发现 GIF 时正确地动画化它。您也可以使用以下内置分类方法来提供当您显示本地项目中的图像时的自定义动画 GIF 图像。
+ (UIImage *)urb_animatedImageWithAnimatedGIFData:(NSData *)data;
+ (UIImage *)urb_animatedImageWithAnimatedGIFURL:(NSURL *)url;
本组件包含的大多数自定义选项都与动画和物理相关,所有这些都被存储在URBMediaFocusViewController.m
中的静态变量中,可以快速编辑以达到您期望的效果。
默认情况下,开启了视差和模糊效果。要禁用其中一个或两个效果,只需在您的实例上设置以下属性
self.parallaxEnabled = NO; // default YES
self.shouldBlurBackground = NO; // default YES
默认情况下,点击图片不会关闭焦点视图(由shouldDismissOnTap
控制),但点击图片外部会关闭。您可以通过将shouldDismissOnImageTap
设置为YES
在您的URBMediaFocusViewController
实例上更改此设置,这将允许直接点击图片来关闭
self.shouldDismissOnImageTap = YES; // default NO
如果您只想使用UIDynamics关闭,你也可以关闭用于默认关闭的点击手势(不建议用于iOS 6,因为UIDynamics不可用)
self.shouldDismissOnTap = NO; // default YES
您还可以在图片长按手势时,从操作表提供所展示照片的复制和保存操作。默认情况下,此功能是禁用的,所以只需使用shouldShowPhotoActions
属性来控制此设置
self.shouldShowPhotoActions = YES; // default NO
本代码根据MIT许可证的条款和条件进行分发。