PhotoZoom 0.0.2

PhotoZoom 0.0.2

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

Brennan Stehling 维护。



PhotoZoom 0.0.2

一个iOS项目,该项目的功能与苹果的 Photos 应用非常相似。

概述

有很多照片浏览项目。您可以在 Cocoa Controls 上找到一些,但它们并没有满足我的需求。我想要一个非常简单的库,可以轻松地集成到应用程序中。此解决方案实质上是 UIScrollView 的扩展,增加了点击手势。

该项目是在参考了苹果的 PhotoScroller 和 AutoScroll 示例后构建的。(请参阅 @elizablock 在 Twitter 上的信息)

视图控制器和视图层次结构

在此项目中,层次结构如下:

PZViewController -> UICollectionView -> PZPhotoView

PZViewController 实现了委托方法,用于生成在集合视图中显示的视图。这些视图都是 PZPhotoView 的实例,一个委托方法处理每个实例的配置以显示图像。可以以不同的方式实现委托方法,以便在分页滚动视图中放置任何内容。目前,图像是通过使用 NIB 作为调色板创建的,以使内容自包含并便于测试。接下来可以下载实际的图像。这种方法避免了同时加载所有图像以避免过多的内存使用。委托方法甚至可以处理分页滚动视图中的不同类型的视图。

棘手的地方是进入和退出全屏模式时,需要隐藏每个栏以及旋转。从顶部到底部查看布局的日志功能有助于看到发生的事情。似乎有很多我不期望的副作用,所以我必须观察并对其做出反应。需要更多的工作来确保这些故障排除方法可以在未来的版本中得到更好的可靠性,并可能使其与 iOS 5 兼容,后者尚未进行任何测试。

方法

我原本可以将更多代码放入视图控制器中,但我在实践中发现,在视图中编写代码与使用代理进行独特处理相结合可以使代码更容易重用和扩展。这样,我可以将多个视图放入父视图中,并将所有功能无缝地整合在一起。例如,在类似Pulse的新闻应用中,可以在一个视图控制器内部管理多个分页滚动视图。这个分页滚动视图可以放置在Storyboard中管理的NIB中,只需设置基本类以便与您自己继承的视图对齐,该视图可以实现您需要的委托方法。

重用

要在您的项目中使用这些类,您只需要PZPhotoView和集合视图。其余的只是一些参考信息。

注意事项

当在滚动视图内部管理滚动视图时,几何形状可能比较复杂。此外,隐藏和显示状态栏、导航栏和工具栏的过程可能会扭曲布局,并需要观察这些变化并进行相应的代码调整或使用自动调整大小来更好地管理布局。我发现在全屏模式下切换非常困难,因为布局会有副作用。我试图模仿照片应用中的行为,但从公开API看,似乎没有一种安全的方式来同步动画状态栏和其他条。所以我只能尽我所能做到最好。由于状态栏的存在,会有一个跳跃,我希望在找到更好的方法后将其消除。一旦我在开发者论坛或Stackoverflow上得到一些答案,我可能能够更新此代码以提供更平滑的过渡。

奇异性

这个项目的某个奇怪之处在于,NavigationBar默认不显示。我必须通过代码将其设置为可见。这没有道理,因为它应该默认显示。我需要了解为什么会出现这种情况,并修复它。这可能是由于最近Interface Builder的频繁更改导致的Xcode中的一个bug,它会自动解决。

Brennan Stehling
SmallSharpTools LLC
www.smallsharptools.com