https://github.com/gavinning/flexview
简单的盒模型,类似HTML的Flexbox
https://github.com/gavinning/flexview
flex flexbox flexview swift
Last synced: 10 months ago
JSON representation
简单的盒模型,类似HTML的Flexbox
- Host: GitHub
- URL: https://github.com/gavinning/flexview
- Owner: gavinning
- License: mit
- Created: 2017-09-25T04:36:20.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-04-07T13:27:50.000Z (almost 8 years ago)
- Last Synced: 2025-03-03T15:16:22.356Z (11 months ago)
- Topics: flex, flexbox, flexview, swift
- Language: Swift
- Size: 60.9 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
FlexView
---
简单的盒模型,类似HTML的Flexbox,完整功能还在实现中...
适用一些常规布局场景,自动排序,自动间隔,进出场动画,可选纵横
### Install
```sh
pod install FlexView
```
### Requirements
* iOS 10.0+
* Swift 4.0+
### Usage
```swift
let flex = FlexView(frame: CGRect(x: 0, y: 0, width: 320, height: 568))
let title = UILabel(frame: CGRect(x: 0, y: 0, width: 320, height: 60))
let image = UIImageView(UIImage(named: "001"))
title.text = "这是一个标题"
image.frame.size = CGSize(width: 320, height: 320)
flex.addSubview(title)
flex.addSubview(image)
```
```swift
// 盒子子视图排列方向 默认为垂直排列
flex.axis = .vertical
// 可选水平排列
flex.axis = .horizontal
// 子视图之间间距,默认值为0
// 如果要单独为某个子视图设置间距,直接改变该视图的x,y轴数值即可
flex.spacing = 0
// 盒子空间占用情况,只读属性
flex.usedSpace
```
**删除子视图时更新FlexView**
```swift
let flex = FlexView()
let btn = UIButton
btn.addTarget(self, action: #selector(btnClicked(_:)), for: .touchUpInside)
// This in ViewController
@objc func btnClicked(_ sender: UIButton) {
if let superview = sender.superview as? FlexView {
// 使用FlexView的删除方法 removeSubview
// 不要使用sender.removeFromSuperview()
superview.removeSubview(sender)
// 更新contentSize用此方法
superview.contentSizeToFit(animated: true)
// 更新size用此方法
superview.sizeToFit(animated: true)
// sizeToFit的resize属性默认根据axis的值决定,也可以手动指定
// 例如 只更新width
superview.sizeToFit(by: .width)
// 例如 只更新height
superview.sizeToFit(by: .height)
// 例如 宽高全部更新
superview.sizeToFit(by: .both)
// contentSizeToFit使用方法同上
}
}
```
**添加动画和删除动画**
```swift
// 重写可选动画方法 默认为false
flex.addSubview(_ view: UIView, animated: Bool)
flex.removeSubview(_ view: UIView, animated: Bool)
flex.insertSubview(_ view: UIView, at index: Int, animated: Bool)
```
Changelog
---
**v0.3.1**
1.修正``addSubview`` ``insertSubview`` Fade动画造成的子视图``alpha``属性失效的问题
**v0.3.0**
1.重写``sizeToFit``方法用于重设FlexView所占空间
2.新增``contentSizeToFit``方法用于重设FlexView滚动区域
3.新增``removeSubview``方法,用于删除子视图; 不要直接用``item.removeFromSuperView``,因为FlexView无法跟踪子视图的自我删除操作
4.重写``addSubview`` ``insertSubview`` 添加可选动画参数,默认为``false``