RHScroll 1.0.1

RHScroll 1.0.1

Rashwan Lazkani维护。



RHScroll 1.0.1

  • 作者:
  • rashwanlazkani

RHScroll

CI Status Version License Platform

关于

RHScroll是一个类似App Store上多个著名应用的ScrollView。它可以简单地创建一个水平ScrollView,可用于多种不同用途。你可以选择ScrollView的大小、项目大小、数据和一切内容的定位。它内置了点击和长按手势的动画和通知。你可以添加视图、标签和图像(请见下面示例)。

这里是可以看到的样子

功能

RHScrollView有两个可以调用的函数:

  1. func createFor(_ views: [RHView], frame: CGRect, itemSize: CGSize) -> RHScrollView { ... } 返回一个包含所选视图和所在帧的RHScrollView

  2. 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

步骤 2 - 为不同类型的数据创建 ScrollView

视图和图像

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文件以获取更多信息。