https://github.com/gavinning/interactiveview
用于两个视图之间做子视图的互动关联
https://github.com/gavinning/interactiveview
Last synced: 10 months ago
JSON representation
用于两个视图之间做子视图的互动关联
- Host: GitHub
- URL: https://github.com/gavinning/interactiveview
- Owner: gavinning
- Created: 2018-04-04T07:41:12.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2018-04-04T07:42:01.000Z (almost 8 years ago)
- Last Synced: 2025-02-01T12:46:44.074Z (11 months ago)
- Language: Swift
- Size: 2.64 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
Interactive
---
用于两个视图之间做子视图的互动关联

### Usage
``Interactive``需要依赖[FlexView](https://github.com/gavinning/FlexView)
其诸多特性需要``FlexView``支持,例如子视图进出场动画,自动滚动区域等等
```swift
// 需要实现两个代理方法
// @1 创建父视图的方法
func createParent() -> FlexView
// @2 创建子视图队列的方法
func createItems() -> [UIView]
```
#### 单例模式
```swift
import UIKit
class ViewController: Interactive {
var marginSide: CGFloat = 10
var margin: CGFloat {
return marginSide*2
}
override func viewDidLoad() {
super.viewDidLoad()
// 返回两个父视图
// inter.a & inter.b
// 可以根据需要添加到ViewController中
inter.b.frame.origin.y = inter.a.frame.origin.y + inter.a.frame.height + 10
self.view.addSubview(inter.a)
self.view.addSubview(inter.b)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
// 创建父视图的方法
override func createParent() -> FlexView {
let bar = FlexView(frame: CGRect(x: 0, y: 30, width: self.view.frame.width, height: 40))
bar.axis = .horizontal
bar.spacing = 6
bar.showsHorizontalScrollIndicator = false
bar.showsVerticalScrollIndicator = false
bar.contentInset = UIEdgeInsets(top: 8, left: 0, bottom: 8, right: 0)
bar.backgroundColor = UIColor(red: 0, green: 0, blue: 1, alpha: 0.05)
bar.contentSizeToFit()
return bar
}
// 创建子视图队列的方法
override func createItems() -> [UIView] {
let tags = ["风光", "色彩", "城市", "时尚", "旅行", "上海", "雕刻时光", "手绘", "插画"] // , "CG", "原画", "35mm", "尼康"
return tags.map { (tag) in
let btn = UIButton()
btn.setTitle(tag, for: .normal)
btn.setTitleColor(.gray, for: .normal)
btn.titleLabel?.font = UIFont.systemFont(ofSize: 12)
btn.layer.masksToBounds = true
btn.layer.cornerRadius = 10
btn.layer.borderColor = UIColor.gray.cgColor
btn.layer.borderWidth = 0.5
btn.contentEdgeInsets = UIEdgeInsets(top: 4, left: self.marginSide, bottom: 4, right: self.marginSide)
btn.sizeToFit()
btn.backgroundColor = UIColor(red: 0, green: 1, blue: 0, alpha: 0.05)
btn.addTarget(self, action: #selector(itemClicked(_:)), for: .touchUpInside)
return btn
}
}
}
```
#### 多实例模式
```swift
import UIKit
class MoreViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// TagInteractive是Interactive的子类
// 子类具体实现可以参考单例模式
let tag = TagInteractive()
tag.viewDidLoad()
tag.inter.b.frame.origin.y = tag.inter.a.frame.origin.y + tag.inter.a.frame.height + 10
self.view.addSubview(tag.inter.a)
self.view.addSubview(tag.inter.b)
// ImageInteractive是Interactive的子类
let image = ImageInteractive()
image.viewDidLoad()
image.inter.b.frame.origin.y = image.inter.a.frame.origin.y + image.inter.a.frame.height + 10
self.view.addSubview(image.inter.a)
self.view.addSubview(image.inter.b)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
```