UIPhotoGallery 0.1.2

UIPhotoGallery 0.1.2

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
释放上次发布2014年12月

未声明的维护。



  • Ethan Nguyen

UIPhotoGallery是一组扩展并可定制的视图,用于在iOS UIKit中显示相册。此库包含2个主要组件:UIPhotoGalleryViewUIPhotoGalleryViewController

目录

  1. 数据源、委托、模式与样式
  2. UIPhotoGalleryView
  3. UIPhotoGalleryViewController
  4. 安装与依赖
  5. 许可证

数据源、委托、模式与样式

UIPhotoGallery采用UITableView样式实现,使用dataSourcedelegate指针来构建UI组件。

数据源、模式与样式

声明要显示在相册中的视图数量

- (NSInteger)numberOfViewsInPhotoGallery:(UIPhotoGalleryView*)photoGallery;

声明在特定索引中的视图组件

- (UIImage*)photoGallery:(UIPhotoGalleryView*)photoGallery localImageAtIndex:(NSInteger)index;
- (NSURL*)photoGallery:(UIPhotoGalleryView*)photoGallery remoteImageURLAtIndex:(NSInteger)index;
- (UIView*)photoGallery:(UIPhotoGalleryView*)photoGallery customViewAtIndex:(NSInteger)index;

目前,仅使用一个方法构建相册中的视图组件,依赖于UIPhotoGalleryView的galleryMode属性。迄今为止,有3种模式受到支持

UIPhotoGalleryModeImageLocal
UIPhotoGalleryModeImageRemote
UIPhotoGalleryModeCustomView

声明特定索引中的标签组件

- (NSString*)photoGallery:(UIPhotoGalleryView*)photoGallery plainTextCaptionAtIndex:(NSInteger)index;
- (NSAttributedString*)photoGallery:(UIPhotoGalleryView*)photoGallery attributedTextCaptionAtIndex:(NSInteger)index;
- (UIView*)photoGallery:(UIPhotoGalleryView*)photoGallery customViewCaptionAtIndex:(NSInteger)index;

与视图组件类似,目前仅使用一个标签构建方法来构建相册项的标签,依赖于UIPhotoGalleryView的captionStyle属性,包括3种受支持的样式

UIPhotoCaptionStylePlainText
UIPhotoCaptionStyleAttributedText
UIPhotoCaptionStyleCustomView

委托

迄今为止,UIPhotoGallery提供了3个委托方法

- (void)photoGallery:(UIPhotoGalleryView*)photoGallery didTapAtIndex:(NSInteger)index;
- (void)photoGallery:(UIPhotoGalleryView*)photoGallery didDoubleTapAtIndex:(NSInteger)index;
- (UIPhotoGalleryDoubleTapHandler)photoGallery:(UIPhotoGalleryView*)photoGallery doubleTapHandlerAtIndex:(NSInteger)index;
- (void)photoGallery:(UIPhotoGalleryView *)photoGallery didMoveToIndex:(NSInteger)index;

使用photoGallery:didTapAtIndex:方法处理相册项的单次点击。

使用photoGallery:doubleTapHandlerAtIndex:方法设置双击手势识别器的默认操作。选项包括

UIPhotoGalleryDoubleTapHandlerNone
UIPhotoGalleryDoubleTapHandlerZoom
UIPhotoGalleryDoubleTapHandlerCustom

如果此方法返回UIPhotoGalleryDoubleTapHandlerZoom,则在点击位置将缩放当前照片项。如果返回UIPhotoGalleryDoubleTapHandlerCustom,则如果实现了photoGallery:didDoubleTapAtIndex:,则会分派操作。否则,如果返回UIPhotoGalleryDoubleTapHandlerNone,则不会发生任何操作。

使用photoGallery:didMoveToIndex:方法通知当前索引是否已更改。(感谢jstubenrauch

UIPhotoGalleryView

属性

有一些属性可以帮助您快速自定义画廊

@property (nonatomic, assign) UIPhotoGalleryMode galleryMode;
@property (nonatomic, assign) UIPhotoCaptionStyle captionStyle;
@property (nonatomic, assign) BOOL peakSubView;
@property (nonatomic, assign) BOOL showsScrollIndicator;
@property (nonatomic, assign) BOOL verticalGallery;
@property (nonatomic, assign) CGFloat subviewGap;
@property (nonatomic, assign) NSInteger initialIndex;
@property (nonatomic, readonly) NSInteger currentIndex;

如上所述,galleryModecaptionStyle 用于更改相册模式(显示本地图片、远程图片或自定义视图)和标题样式(纯文本、属性文本或自定义视图)。默认情况下,galleryMode 设置为 UIPhotoGalleryModeLocalImage,而 captionStyle 设置为 UIPhotoCaptionStylePlainText

使用 peakSubView 启用/禁用相册项的突出显示(将项目绘制在 UIPhotoGallery 的框架外)。默认情况下,此属性设置为 NO

vPhotoGallery.peakSubView = YES;

使用 showsScrollIndicator 显示/隐藏滚动条指示器。滚动条的方向将自动调整以反映相册的滚动方向。

使用 verticalGallery 将相册的滚动方向设置为水平/垂直。默认情况下,此属性设置为 NO(水平滚动)。

vPhotoGallery.verticalGallery = YES;

使用 subviewGap 调整相册项之间的空白间隔。默认情况下,此属性设置为 30.0

vPhotoGallery.subviewGap = 50;

使用 initialIndex 设置视图加载时的初始位置。默认情况下,此属性设置为 0

vPhotoGallery.initialIndex = 4;

只读的 currentIndex 属性返回当前显示的相册项索引。

注意:所有这些属性都可以在运行时设置,您的相册将在调用设置器后立即更改,而无需调用任何额外的方法。

方法

除了用于自定义相册样式的属性,还提供了一些辅助方法来控制相册的滚动。

- (void)setInitialIndex:(NSInteger)initialIndex animated:(BOOL)animation;
- (BOOL)scrollToPage:(NSInteger)page animated:(BOOL)animation;
- (BOOL)scrollToBesidePage:(NSInteger)delta animated:(BOOL)animation;

方法 setInitialIndex:animated: 是一种动画初始化页面设置的方法。默认的 initialIndex 属性不具有动画效果。

[vPhotoGallery setInitialIndex:4 animated:YES]; 
[vPhotoGallery setInitialIndex:4 animated:NO]; // Equivalent to vPhotoGallery.initialIndex = 4;

方法 scrollToBeSidePage 使用 NSInteger delta 参数从当前页面滚动到下一个或上一个 delta 页面。

[vPhotoGallery scrollToBesidePage:1 animated:YES];
[vPhotoGallery scrollToBesidePage:-2 animated:YES];

所有页面索引验证都为您完成,如果索引有效并且进行了滚动,则返回 YES,否则返回 NO

UIPhotoGalleryViewController

作为扩展,创建了 UIPhotoGalleryViewController 来帮助简化创建相册浏览视图控制器的过程。该视图控制器已经包含了一个命名为 vPhotoGalleryUIPhotoGalleryView 项目,并且已经使用默认配置初始化。

除了可以用于设置您的 vPhotoGallery 的同一组属性外,还可以使用所有这些属性,除了 delegate(默认情况下,相册的代理由视图控制器本身处理)。

@property (nonatomic, assign) id<UIPhotoGalleryDataSource> dataSource;
@property (nonatomic, assign) UIPhotoGalleryMode galleryMode;
@property (nonatomic, assign) UIPhotoCaptionStyle captionStyle;
@property (nonatomic, assign) BOOL circleScroll;
@property (nonatomic, assign) BOOL peakSubView;
@property (nonatomic, assign) BOOL verticalGallery;
@property (nonatomic, assign) CGFloat subviewGap;
@property (nonatomic, assign) NSInteger initialIndex;

@property (nonatomic, assign) BOOL showStatusBar;

包含了一个附加属性,即 showStatusBar,用于强制隐藏可见的应用程序状态栏。 注意:如果此属性设置为 YES,则还会隐藏导航栏。

除了从 UIPhotoGalleryDataSource 的默认数据源方法之外,还包括两个附加方法来设置相册视图控制器的顶部和底部视图。

- (UIView*)customTopViewForGalleryViewController:(UIPhotoGalleryViewController*)galleryViewController;
- (UIView*)customBottomViewForGalleryViewController:(UIPhotoGalleryViewController*)galleryViewController;

如果未实现这些方法,则 UIPhotoGallery ViewController 将提供两个默认视图,用于顶部和底部的基本操作(关闭视图控制器,滚动到下一页和前一页)。

如果实现了这些方法,则分别在顶部或底部放置一个自定义视图。

否则,如果实现了这些方法并返回 nil,则相应的视图将从视图控制器中隐藏。

默认情况下,对于相册代理处理,当用户在相册中单击一次时,顶部和底部视图将带有动画隐藏。

安装 & 依赖项

安装

对于最低要求,将以下 4 个文件添加到您的项目中

UIPhotoGalleryView.h
UIPhotoGalleryView.m
UIPhotoItemView.h
UIPhotoItemView.m

for UIPhotoGalleryView UI 组件和方法。还包括 2 个附加文件

UIPhotoGalleryViewController.h
UIPhotoGalleryViewController.m

只有在您想使用 UIPhotoGalleryViewController 时才应包含此内容。

设置

可以通过默认方法 initWithFrame: 初始化 UIPhotoGalleryView,或者按照以下步骤从 XIB 文件中关联自定义类

  1. 进入您的 XIB 文件
  2. 单击左侧的文件所有者透明框
  3. 打开检查标签页(在视图部分中,位于编辑器和组织者之间,右侧的第三个按钮)
  4. 转到您的身份检查器(位于编辑器/组织视图标签下的第三个)
  5. 设置自定义类 - 将类选项更改为您想要响应该类的选项。

在 Interface Builder 中也可以链接 dataSourcedelegate

依赖项

该项目使用 SDWebImage 作为默认的图片加载和显示。请遵循其 安装说明 来设置项目或自定义 UIRemotePhotoItem 类实现(在 UIPhotoItemView.m)内的图片加载方法

要求和支持

UIPhotoGalleryView 需要 iOS SDK 5.0 及以上版本,arc 已启用。

该项目已支持多种屏幕尺寸和方向(自动调整大小和自动旋转)。

许可证

所有源代码均按照 MIT 许可证 进行许可

Copyright (c) 2013 Ethan Nguyen <[email protected]>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.