PeekView
当实现 peek、pop 和 preview 动作与 3D Touch 一起使用时,您可能希望为使用老旧设备访问您的应用程序且不支持 3D Touch 的用户提供此类功能。因此,在此情况下,PeekView 可以用作替代方案。
(请忽略 GIF 的低分辨率。尝试演示以获取实际体验。)
注意
需要改进的地方
- 更好的 Objective-C 集成方案(当前略显拙劣!)
- 更好的代码文档
- 内容视图滚动:更平滑的动画
- 操作风格:选择功能
- 如有需要,更多可定制的 UI(欢迎提出建议)
- 如有必要,修复任何错误
要求
- iOS 8 及以上版本
- Swift 4.2 & Xcode 10
- 如果您希望使用 Swift 2.3,请查看分支
swift23
开始使用
使用 CocoaPods 进行安装
只需在您的 pod 文件中添加以下行
pod 'PeekView'
手动安装
将名为 Source
的文件夹拖放到您的项目中即可。
用法
- 将
UILongPressGestureRecognizer
添加到您想要预览的视图(例如表格视图单元格、图像、超文本等) - 创建一个
UIViewController
实例作为您预览视图的内容;然后设置您希望的内容视图框架。建议在内容视图的左右边距处都留出 15px 的内边距。 - 如果想要包含预览操作,准备一个包含按钮标题和其预览样式的数组。不要忘记为每个按钮的点击操作准备完成处理程序。
示例代码片段
let options = [
PeekViewAction(title: "Option 1", style: .Destructive),
PeekViewAction(title: "Option 2", style: .Default),
PeekViewAction(title: "Option 3", style: .Selected) ]
PeekView().viewForController(
parentViewController: self,
contentViewController: controller,
expectedContentViewFrame: frame,
fromGesture: gestureRecognizer,
shouldHideStatusBar: true,
withOptions: options,
completionHandler: { optionIndex in
switch optionIndex {
case 0:
print("Option 1 selected")
case 1:
print("Option 2 selected")
case 2:
print("Option 3 selected")
default:
break
}
})
请确保查看示例代码以更好地理解用法。
关于 Objective-C 的集成,应该使用一个稍微不同的静态函数,其中期望 menuOptions
数组是一个 NSArray
的 NSDictionary
。请查看下面的代码片段
NSArray *options = @[@{@"Option 1": @(PeekViewActionStyleDefault)},
@{@"Option 2": @(PeekViewActionStyleDestructive)}];
UIViewController *contentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"previewVC"];
[PeekView viewForControllerWithParentViewController:self
contentViewController:contentViewController
expectedContentViewFrame:CGRectMake(0, 0, 280, 400)
fromGesture:gesture
shouldHideStatusBar:YES
withOptions:options
completionHandler:nil];
ARC
PeekView 使用 ARC。如果您在非 ARC 项目中使用 PeekView,您需要在每个 PeekView 源文件上设置 -fobjc-arc
编译器标志。要在 Xcode 中设置编译器标志,请转到您的活动目标并选择“编译阶段”选项卡。然后选择 PeekView 源文件,按 Enter 键,输入 -fobjc-arc,然后“完成”以为 PeekView 启用 ARC。
贡献
欢迎提交针对修复bug或改进的贡献。请随意提交一个拉取请求(pull request)。
许可证
PeekView遵循MIT许可证。有关更多信息,请参阅LICENSE文件。