RHScroll
关于
RHScroll
是一个类似App Store上多个著名应用的ScrollView
。它可以简单地创建一个水平ScrollView
,可用于多种不同用途。你可以选择ScrollView
的大小、项目大小、数据和一切内容的定位。它内置了点击和长按手势的动画和通知。你可以添加视图、标签和图像(请见下面示例)。
这里是可以看到的样子
功能
RHScrollView
有两个可以调用的函数:
-
func createFor(_ views: [RHView], frame: CGRect, itemSize: CGSize) -> RHScrollView { ... }
返回一个包含所选视图和所在帧的RHScrollView
。 -
func createFor(_ labels: [RHLabel], frame: CGRect, itemSize: CGSize) -> RHScrollView { ... }
返回一个包含所选标签和所在帧的RHScrollView
。
实现
在您的视图中实现 RHScrollView
需要执行以下步骤
步骤 1 - 订阅点击
在您的 viewDidLoad
方法中订阅以下 Notification
NotificationCenter.default.addObserver(self, selector: #selector(rhScrollViewDidSelect), name: Notification.Name(RHConst.didSelect), object: nil)
当在 ScrollView
中选择商品时,该通知用于通知。然后声明 Notification
的函数
@objc private func rhScrollViewDidSelect(notification: Notification) {
if let object = notification.object as? [String: Any], let scrollViewTag = object[RHConst.scrollViewTag] as? Int, let itemTag = object[RHConst.itemTag] as? Int, let longPressGestureMax = object[RHConst.longPressGestureMax] as? Bool {
if longPressGestureMax {
// Here you can for instance show an actionSheet
}
}
}
在这个函数中有三个变量:scrollViewTag
- 如果您有多个 ScrollView
,将用于表示哪个 ScrollView
正在活动 itemTag
- 在 ScrollView
中被选中的商品 longPressGestureMax
- 如果用户以长按的方式选择了商品,在 0.5 秒后调用,则为 true
ScrollView
步骤 2 - 为不同类型的数据创建 视图和图像
let views = [RHView(backgroundColor: .green), RHView(backgroundColor: .gray), RHView(backgroundColor: .orange), RHView(backgroundColor: .black), RHView(backgroundColor: .magenta)]
let frame = CGRect(x: 16, y: 200, width: self.view.frame.maxX - 32, height: 75)
let size = CGSize(width: 100, height: 65)
let scrollView = rhScrollView.createFor(images, frame: frame, itemSize: size)
self.view.addSubview(scrollView)
标签
let labels = [RHLabel(text: "First"), RHLabel(text: "Second"), RHLabel(text: "Third"), RHLabel(text: "Fourth")]
let frame = CGRect(x: 16, y: 300, width: self.view.frame.maxX - 32, height: 75)
let size = CGSize(width: 100, height: 65)
let scrollView = rhScrollView.createFor(labels, frame: frame, itemSize: size)
self.view.addSubview(scrollView)
这就是创建 ScrollView
所需要的全部内容。
RHScroll
的完整示例
包含视图的 import RHScroll
import UIKit
class ViewController: UIViewController {
let rhScrollView = RHScrollView()
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(rhScrollDidSelect), name: Notification.Name(RHConst.didSelect), object: nil)
create()
}
func create() {
let views = [RHView(backgroundColor: .green), RHView(backgroundColor: .black), RHView(backgroundColor: .blue), RHView(backgroundColor: .yellow)]
let frame = CGRect(x: 16, y: 400, width: self.view.frame.maxX - 32, height: 75)
let size = CGSize(width: 100, height: 65)
let scrollView = rhScrollView.createFor(views, frame: frame, itemSize: size)
self.view.addSubview(scrollView)
}
@objc private func rhScrollDidSelect(notification: Notification) {
if let object = notification.object as? [String: Any], let scrollViewTag = object[RHConst.scrollViewTag] as? Int, let itemTag = object[RHConst.itemTag] as? Int, let longPressGestureMax = object[RHConst.longPressGestureMax] as? Bool {
if longPressGestureMax {
// Here you can for instance show an actionSheet
print("long press on \(scrollViewTag) and item \(itemTag)")
} else {
print("tap on \(scrollViewTag) and item \(itemTag)")
}
}
}
}
需求
安装
RHScrollView可以通过CocoaPods获取。要安装它,只需在您的Podfile中添加以下行:
pod 'RHScroll'
作者
rashwanlazkani, [email protected]
许可协议
RHScrollView在MIT许可下可用。请查看LICENSE文件以获取更多信息。