IOS 一款简单的Swift布局框架-EasyLayout
来源:互联网 发布:php5权威编程 pdf 编辑:程序博客网 时间:2024/05/16 18:13
EasyLayout 简介
EasyLayout 是一个服务于ios,基于swift编写的布局框架。它定义了运算符,通过编写view之间的关系生成对应的NSLayoutConstraint对象,简化了NSLayoutConstraint对象的生成代码,它使得约束的显示方式和xib的约束显示很相似
EasyLayout通过扩展UIView和UIViewController添加API,通过编写UIView与UIView之间关系或者UIView与UIViewController的LayoutGuide之间的关系就可以生成对应的NSLayoutConstraint
项目和Demo地址: https://github.com/wangmuhuo/EasyLayoutDemo.git
使用事例
swift代码:
//// ViewController.swift// EasyLayoutDemo//// Created by Jejay on 17/3/14.// Copyright © 2017年 jejay. All rights reserved.//import UIKitimport EasyLayoutclass ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let view1: UIView = { let view = UIView() view.backgroundColor = UIColor.redColor() return view }() let view2: UIView = { let view = UIView() view.backgroundColor = UIColor.greenColor() return view }() self.view.addSubview(view1) self.view.addSubview(view2) view1.translatesAutoresizingMaskIntoConstraints = false view2.translatesAutoresizingMaskIntoConstraints = false self.view.addConstraints([ view1.es.top .= self.es_topLayoutGuideBottom .+ 50, view1.es.centerX .= self.view.es.centerX, view1.es.height .= 50, view1.es.width .= self.view.es.width .* 0.5, view2.es.top .= view1.es.bottom .+ 50, view2.es.centerX .= view1.es.centerX, view2.es.height .= view1.es.height .* 2 .+ 50, view2.es.width .= 1000 .| 900, view2.es.width .<= view1.es.width .- 50, ]) } }
效果:
EasyLayout api 简单介绍
目录文件结构
ESLayout.swift 提供布局相关api
布局属性
1、UIView的布局属性:通过 view.es. 就可以通过联想得到,
2、UIViewController的LayoutGuide的布局属性:通过viewController.es_ 就可以通过联想得到
运算符
一、.= 、.<= 、.>=:
双目运算符,参数是两个布局属性,用于创建两个布局属性之间的约束关系,分别对应于系统NSLayoutRelation下的.Equal、.LessThanOrEqual、.GreaterThanOrEqual
如:
let c1 = view1.es.height.= 50
等同于:let c1 = NSLayoutConstraint(
item: view1, attribute:NSLayoutAttribute.Height,
relatedBy: .Equal,
toItem: nil, attribute: .NotAnAttribute,
multiplier: 1,
constant: 50)
二、 .*、./、.+ 、.-:
双目运算符,参数是属性和一个数值类型,用于给属性增加偏移或者倍数关系,对应NSLayoutConstraint的constant属性和multiplier属性
如:
let c2 = view1.es.height.= view2.es.height .* 2
等同于:let c2 = NSLayoutConstraint(
item: view1, attribute: NSLayoutAttribute.Height,
relatedBy: .Equal,
toItem: view2, attribute:NSLayoutAttribute.Height,
multiplier: 2,
constant: 0)
三、 .|:
双目运算符,参数是NSLayoutConstraint和一个数值类型,用于给属性增加权重值,对应NSLayoutConstraint的priority
如:
let c3 = view1.es.height.= 50 .| 500
等同于以下两句代码:let c3 = NSLayoutConstraint(
item: view1, attribute:NSLayoutAttribute.Height,
relatedBy: .Equal,
toItem: nil, attribute: .NotAnAttribute,
multiplier:1,
constant: 50)
c3.priority = 500
- IOS 一款简单的Swift布局框架-EasyLayout
- [iOS]Swift自动布局框架
- 从零开始学swift(六)-iOS之做一款简单app
- iOS开发进阶 - 日志输出框架CocoaLumberjack与XcodeColors插件的简单使用(swift版)
- FMDB框架的简单使用(swift)
- Vitamio一款Android&iOS上的全能多媒体开发框架
- iOS-swift-动画 简单基础的动画摘要-1
- OC/Swift 实现的功能强大的界面布局框架
- 一款简单易用的 Toast 组件,支持 Android&iOS
- 一款简单易用的 Toast 组件,支持 Android&iOS
- <iOS>swift简单控件的创建
- Swift开发:iOS那些简单的动画
- 一个简单的页面框架布局(iframe)
- IOS 自动布局篇 swift
- 关于iOS工程文件夹的布局框架.
- iOS下的界面布局利器-MyLayout布局框架
- iOS下的界面布局利器-MyLayout布局框架
- iOS下的界面布局利器-MyLayout布局框架
- ubuntu探索之路
- kali nethunter
- Android 面试之 Android 篇
- 语音学习笔记12------直观理解深度学习与卷积神经网络
- Java——三人年龄问题
- IOS 一款简单的Swift布局框架-EasyLayout
- 3.14 有关于网上hadoop的简单理解
- 第17节 C语言之函数与全局变量局部变量
- POJ 2533 Longest Ordered Subsequence(最长非递减子序列,LIS)
- 集合
- File类和时间类的两道综合练习
- jdbc和odbc区别
- struts中include需要注意的问题
- codves动态规划 最长上升子序列