Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
Material
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Dmitriy Stepanets
Material
Commits
a944d77d
Unverified
Commit
a944d77d
authored
May 24, 2019
by
Daniel Jonathan
Committed by
GitHub
May 24, 2019
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1236 from OrkhanAlikhanov/layout-relation
Added Layout relations
parents
091e1086
7f374791
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
160 additions
and
80 deletions
+160
-80
Sources/iOS/Layout/Layout.swift
+147
-76
Sources/iOS/Layout/LayoutConstraint.swift
+13
-4
No files found.
Sources/iOS/Layout/Layout.swift
View file @
a944d77d
...
@@ -83,6 +83,7 @@ private extension NSLayoutConstraint {
...
@@ -83,6 +83,7 @@ private extension NSLayoutConstraint {
&&
secondItem
===
other
.
secondItem
&&
secondItem
===
other
.
secondItem
&&
firstAttribute
==
other
.
firstAttribute
&&
firstAttribute
==
other
.
firstAttribute
&&
secondAttribute
==
other
.
secondAttribute
&&
secondAttribute
==
other
.
secondAttribute
&&
relation
==
other
.
relation
}
}
}
}
...
@@ -197,61 +198,67 @@ public extension Layout {
...
@@ -197,61 +198,67 @@ public extension Layout {
/**
/**
Constraints top of the view to its parent's.
Constraints top of the view to its parent's.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
top
(
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
top
(
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
top
,
constant
:
offset
)
return
constraint
(
.
top
,
relationer
:
relationer
,
constant
:
offset
)
}
}
/**
/**
Constraints left of the view to its parent's.
Constraints left of the view to its parent's.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
left
(
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
left
(
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
left
,
constant
:
offset
)
return
constraint
(
.
left
,
relationer
:
relationer
,
constant
:
offset
)
}
}
/**
/**
Constraints right of the view to its parent.
Constraints right of the view to its parent.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
right
(
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
right
(
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
right
,
constant
:
-
offset
)
return
constraint
(
.
right
,
relationer
:
relationer
,
constant
:
-
offset
)
}
}
/**
/**
Constraints leading of the view to its parent's.
Constraints leading of the view to its parent's.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
leading
(
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
leading
(
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
leading
,
constant
:
offset
)
return
constraint
(
.
leading
,
relationer
:
relationer
,
constant
:
offset
)
}
}
/**
/**
Constraints trailing of the view to its parent.
Constraints trailing of the view to its parent.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
trailing
(
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
trailing
(
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
trailing
,
constant
:
-
offset
)
return
constraint
(
.
trailing
,
relationer
:
relationer
,
constant
:
-
offset
)
}
}
/**
/**
Constraints bottom of the view to its parent's.
Constraints bottom of the view to its parent's.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
bottom
(
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
bottom
(
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
bottom
,
constant
:
-
offset
)
return
constraint
(
.
bottom
,
relationer
:
relationer
,
constant
:
-
offset
)
}
}
/**
/**
...
@@ -389,41 +396,45 @@ public extension Layout {
...
@@ -389,41 +396,45 @@ public extension Layout {
/**
/**
Constraints horizontal center of the view to its parent's.
Constraints horizontal center of the view to its parent's.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
centerX
(
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
centerX
(
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
centerX
,
constant
:
offset
)
return
constraint
(
.
centerX
,
relationer
:
relationer
,
constant
:
offset
)
}
}
/**
/**
Constraints vertical center of the view to its parent's.
Constraints vertical center of the view to its parent's.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
centerY
(
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
centerY
(
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
centerY
,
constant
:
offset
)
return
constraint
(
.
centerY
,
relationer
:
relationer
,
constant
:
offset
)
}
}
/**
/**
Constraints width of the view to its parent's.
Constraints width of the view to its parent's.
- Parameter offset: A CGFloat offset.
- Parameter offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
width
(
offset
:
CGFloat
=
0
)
->
Layout
{
func
width
(
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
width
,
constant
:
offset
)
return
constraint
(
.
width
,
relationer
:
relationer
,
constant
:
offset
)
}
}
/**
/**
Constraints height of the view to its parent's.
Constraints height of the view to its parent's.
- Parameter offset: A CGFloat offset.
- Parameter offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
height
(
offset
:
CGFloat
=
0
)
->
Layout
{
func
height
(
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
height
,
constant
:
offset
)
return
constraint
(
.
height
,
relationer
:
relationer
,
constant
:
offset
)
}
}
/**
/**
...
@@ -444,61 +455,67 @@ public extension Layout {
...
@@ -444,61 +455,67 @@ public extension Layout {
/**
/**
Constraints top of the view to its parent's safeArea.
Constraints top of the view to its parent's safeArea.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
topSafe
(
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
topSafe
(
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
top
,
constant
:
offset
,
useSafeArea
:
true
)
return
constraint
(
.
top
,
relationer
:
relationer
,
constant
:
offset
,
useSafeArea
:
true
)
}
}
/**
/**
Constraints left of the view to its parent's safeArea.
Constraints left of the view to its parent's safeArea.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
leftSafe
(
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
leftSafe
(
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
left
,
constant
:
offset
,
useSafeArea
:
true
)
return
constraint
(
.
left
,
relationer
:
relationer
,
constant
:
offset
,
useSafeArea
:
true
)
}
}
/**
/**
Constraints right of the view to its parent.
Constraints right of the view to its parent.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
rightSafe
(
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
rightSafe
(
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
right
,
constant
:
-
offset
,
useSafeArea
:
true
)
return
constraint
(
.
right
,
relationer
:
relationer
,
constant
:
-
offset
,
useSafeArea
:
true
)
}
}
/**
/**
Constraints leading of the view to its parent's safeArea.
Constraints leading of the view to its parent's safeArea.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
leadingSafe
(
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
leadingSafe
(
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
leading
,
constant
:
offset
,
useSafeArea
:
true
)
return
constraint
(
.
leading
,
relationer
:
relationer
,
constant
:
offset
,
useSafeArea
:
true
)
}
}
/**
/**
Constraints trailing of the view to its parent.
Constraints trailing of the view to its parent.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
trailingSafe
(
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
trailingSafe
(
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
trailing
,
constant
:
-
offset
,
useSafeArea
:
true
)
return
constraint
(
.
trailing
,
relationer
:
relationer
,
constant
:
-
offset
,
useSafeArea
:
true
)
}
}
/**
/**
Constraints bottom of the view to its parent's safeArea.
Constraints bottom of the view to its parent's safeArea.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
bottomSafe
(
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
bottomSafe
(
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
bottom
,
constant
:
-
offset
,
useSafeArea
:
true
)
return
constraint
(
.
bottom
,
relationer
:
relationer
,
constant
:
-
offset
,
useSafeArea
:
true
)
}
}
/**
/**
...
@@ -636,41 +653,45 @@ public extension Layout {
...
@@ -636,41 +653,45 @@ public extension Layout {
/**
/**
Constraints horizontal center of the view to its parent's safeArea.
Constraints horizontal center of the view to its parent's safeArea.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
centerXSafe
(
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
centerXSafe
(
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
centerX
,
constant
:
offset
,
useSafeArea
:
true
)
return
constraint
(
.
centerX
,
relationer
:
relationer
,
constant
:
offset
,
useSafeArea
:
true
)
}
}
/**
/**
Constraints vertical center of the view to its parent's safeArea.
Constraints vertical center of the view to its parent's safeArea.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
centerYSafe
(
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
centerYSafe
(
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
centerY
,
constant
:
offset
,
useSafeArea
:
true
)
return
constraint
(
.
centerY
,
relationer
:
relationer
,
constant
:
offset
,
useSafeArea
:
true
)
}
}
/**
/**
Constraints width of the view to its parent's safeArea.
Constraints width of the view to its parent's safeArea.
- Parameter offset: A CGFloat offset.
- Parameter offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
widthSafe
(
offset
:
CGFloat
=
0
)
->
Layout
{
func
widthSafe
(
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
width
,
constant
:
offset
,
useSafeArea
:
true
)
return
constraint
(
.
width
,
relationer
:
relationer
,
constant
:
offset
,
useSafeArea
:
true
)
}
}
/**
/**
Constraints height of the view to its parent's safeArea.
Constraints height of the view to its parent's safeArea.
- Parameter offset: A CGFloat offset.
- Parameter offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
heightSafe
(
offset
:
CGFloat
=
0
)
->
Layout
{
func
heightSafe
(
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
height
,
constant
:
offset
,
useSafeArea
:
true
)
return
constraint
(
.
height
,
relationer
:
relationer
,
constant
:
offset
,
useSafeArea
:
true
)
}
}
/**
/**
...
@@ -691,21 +712,23 @@ public extension Layout {
...
@@ -691,21 +712,23 @@ public extension Layout {
/**
/**
Constraints width of the view to a constant value.
Constraints width of the view to a constant value.
- Parameter _ width: A CGFloat value.
- Parameter _ width: A CGFloat value.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
width
(
_
width
:
CGFloat
)
->
Layout
{
func
width
(
_
width
:
CGFloat
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
constantWidth
,
constants
:
width
)
return
constraint
(
.
constantWidth
,
relationer
:
relationer
,
constants
:
width
)
}
}
/**
/**
Constraints height of the view to a constant value.
Constraints height of the view to a constant value.
- Parameter _ height: A CGFloat value.
- Parameter _ height: A CGFloat value.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
height
(
_
height
:
CGFloat
)
->
Layout
{
func
height
(
_
height
:
CGFloat
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
constantHeight
,
constants
:
height
)
return
constraint
(
.
constantHeight
,
relationer
:
relationer
,
constants
:
height
)
}
}
/**
/**
...
@@ -724,66 +747,72 @@ public extension Layout {
...
@@ -724,66 +747,72 @@ public extension Layout {
Constraints top of the view to the given anchor.
Constraints top of the view to the given anchor.
- Parameter _ anchor: A LayoutAnchorable.
- Parameter _ anchor: A LayoutAnchorable.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
top
(
_
anchor
:
LayoutAnchorable
,
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
top
(
_
anchor
:
LayoutAnchorable
,
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
top
,
to
:
anchor
,
constant
:
offset
)
return
constraint
(
.
top
,
to
:
anchor
,
relationer
:
relationer
,
constant
:
offset
)
}
}
/**
/**
Constraints left of the view to the given anchor.
Constraints left of the view to the given anchor.
- Parameter _ anchor: A LayoutAnchorable.
- Parameter _ anchor: A LayoutAnchorable.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
left
(
_
anchor
:
LayoutAnchorable
,
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
left
(
_
anchor
:
LayoutAnchorable
,
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
left
,
to
:
anchor
,
constant
:
offset
)
return
constraint
(
.
left
,
to
:
anchor
,
relationer
:
relationer
,
constant
:
offset
)
}
}
/**
/**
Constraints right of the view to the given anchor.
Constraints right of the view to the given anchor.
- Parameter _ anchor: A LayoutAnchorable.
- Parameter _ anchor: A LayoutAnchorable.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
right
(
_
anchor
:
LayoutAnchorable
,
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
right
(
_
anchor
:
LayoutAnchorable
,
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
right
,
to
:
anchor
,
constant
:
-
offset
)
return
constraint
(
.
right
,
to
:
anchor
,
relationer
:
relationer
,
constant
:
-
offset
)
}
}
/**
/**
Constraints leading of the view to the given anchor.
Constraints leading of the view to the given anchor.
- Parameter _ anchor: A LayoutAnchorable.
- Parameter _ anchor: A LayoutAnchorable.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
leading
(
_
anchor
:
LayoutAnchorable
,
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
leading
(
_
anchor
:
LayoutAnchorable
,
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
leading
,
to
:
anchor
,
constant
:
offset
)
return
constraint
(
.
leading
,
to
:
anchor
,
relationer
:
relationer
,
constant
:
offset
)
}
}
/**
/**
Constraints trailing of the view to the given anchor.
Constraints trailing of the view to the given anchor.
- Parameter _ anchor: A LayoutAnchorable.
- Parameter _ anchor: A LayoutAnchorable.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
trailing
(
_
anchor
:
LayoutAnchorable
,
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
trailing
(
_
anchor
:
LayoutAnchorable
,
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
trailing
,
to
:
anchor
,
constant
:
-
offset
)
return
constraint
(
.
trailing
,
to
:
anchor
,
relationer
:
relationer
,
constant
:
-
offset
)
}
}
/**
/**
Constraints bottom of the view to the given anchor.
Constraints bottom of the view to the given anchor.
- Parameter _ anchor: A LayoutAnchorable.
- Parameter _ anchor: A LayoutAnchorable.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
bottom
(
_
anchor
:
LayoutAnchorable
,
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
bottom
(
_
anchor
:
LayoutAnchorable
,
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
bottom
,
to
:
anchor
,
constant
:
-
offset
)
return
constraint
(
.
bottom
,
to
:
anchor
,
relationer
:
relationer
,
constant
:
-
offset
)
}
}
/**
/**
...
@@ -934,44 +963,48 @@ public extension Layout {
...
@@ -934,44 +963,48 @@ public extension Layout {
Constraints horizontal center of the view to the given anchor.
Constraints horizontal center of the view to the given anchor.
- Parameter _ anchor: A LayoutAnchorable.
- Parameter _ anchor: A LayoutAnchorable.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
centerX
(
_
anchor
:
LayoutAnchorable
,
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
centerX
(
_
anchor
:
LayoutAnchorable
,
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
centerX
,
to
:
anchor
,
constant
:
offset
)
return
constraint
(
.
centerX
,
to
:
anchor
,
relationer
:
relationer
,
constant
:
offset
)
}
}
/**
/**
Constraints vertical center of the view to the given anchor.
Constraints vertical center of the view to the given anchor.
- Parameter _ anchor: A LayoutAnchorable.
- Parameter _ anchor: A LayoutAnchorable.
- Parameter _ offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
centerY
(
_
anchor
:
LayoutAnchorable
,
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
centerY
(
_
anchor
:
LayoutAnchorable
,
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
centerY
,
to
:
anchor
,
constant
:
offset
)
return
constraint
(
.
centerY
,
to
:
anchor
,
relationer
:
relationer
,
constant
:
offset
)
}
}
/**
/**
Constraints width of the view to the given anchor.
Constraints width of the view to the given anchor.
- Parameter _ anchor: A LayoutAnchorable.
- Parameter _ anchor: A LayoutAnchorable.
- Parameter offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
width
(
_
anchor
:
LayoutAnchorable
,
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
width
(
_
anchor
:
LayoutAnchorable
,
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
width
,
to
:
anchor
,
constant
:
offset
)
return
constraint
(
.
width
,
to
:
anchor
,
relationer
:
relationer
,
constant
:
offset
)
}
}
/**
/**
Constraints height of the view to the given anchor.
Constraints height of the view to the given anchor.
- Parameter _ anchor: A LayoutAnchorable.
- Parameter _ anchor: A LayoutAnchorable.
- Parameter offset: A CGFloat offset.
- Parameter _ offset: A CGFloat offset.
- Parameter _ relationer: A LayoutRelationer.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
@discardableResult
@discardableResult
func
height
(
_
anchor
:
LayoutAnchorable
,
_
offset
:
CGFloat
=
0
)
->
Layout
{
func
height
(
_
anchor
:
LayoutAnchorable
,
_
offset
:
CGFloat
=
0
,
_
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
)
->
Layout
{
return
constraint
(
.
height
,
to
:
anchor
,
constant
:
offset
)
return
constraint
(
.
height
,
to
:
anchor
,
relationer
:
relationer
,
constant
:
offset
)
}
}
/**
/**
...
@@ -1050,21 +1083,23 @@ private extension Layout {
...
@@ -1050,21 +1083,23 @@ private extension Layout {
Constraints the view to its parent according to the provided attribute.
Constraints the view to its parent according to the provided attribute.
If the constraint already exists, will update its constant.
If the constraint already exists, will update its constant.
- Parameter _ attribute: A LayoutAttribute.
- Parameter _ attribute: A LayoutAttribute.
- Parameter _ relationer: A LayoutRelationer.
- Parameter constant: A CGFloat.
- Parameter constant: A CGFloat.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
func
constraint
(
_
attribute
:
LayoutAttribute
,
constant
:
CGFloat
,
useSafeArea
:
Bool
=
false
)
->
Layout
{
func
constraint
(
_
attribute
:
LayoutAttribute
,
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
,
constant
:
CGFloat
,
useSafeArea
:
Bool
=
false
)
->
Layout
{
return
constraint
([
attribute
],
constants
:
constant
,
useSafeArea
:
useSafeArea
)
return
constraint
([
attribute
],
relationer
:
relationer
,
constants
:
constant
,
useSafeArea
:
useSafeArea
)
}
}
/**
/**
Constraints the view to its parent according to the provided attributes.
Constraints the view to its parent according to the provided attributes.
If any of the constraints already exists, will update its constant.
If any of the constraints already exists, will update its constant.
- Parameter _ attributes: An array of LayoutAttribute.
- Parameter _ attributes: An array of LayoutAttribute.
- Parameter _ relationer: A LayoutRelationer.
- Parameter constants: A list of CGFloat.
- Parameter constants: A list of CGFloat.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
func
constraint
(
_
attributes
:
[
LayoutAttribute
],
constants
:
CGFloat
...
,
useSafeArea
:
Bool
=
false
)
->
Layout
{
func
constraint
(
_
attributes
:
[
LayoutAttribute
],
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
,
constants
:
CGFloat
...
,
useSafeArea
:
Bool
=
false
)
->
Layout
{
var
attributes
=
attributes
var
attributes
=
attributes
var
anchor
:
LayoutAnchor
!
var
anchor
:
LayoutAnchor
!
...
@@ -1079,7 +1114,7 @@ private extension Layout {
...
@@ -1079,7 +1114,7 @@ private extension Layout {
anchor
=
LayoutAnchor
(
constraintable
:
useSafeArea
?
parent
?
.
safeAnchor
.
constraintable
:
parent
,
attributes
:
attributes
)
anchor
=
LayoutAnchor
(
constraintable
:
useSafeArea
?
parent
?
.
safeAnchor
.
constraintable
:
parent
,
attributes
:
attributes
)
}
}
return
constraint
(
attributes
,
to
:
anchor
,
constants
:
constants
)
return
constraint
(
attributes
,
to
:
anchor
,
relationer
:
relationer
,
constants
:
constants
)
}
}
/**
/**
...
@@ -1087,11 +1122,12 @@ private extension Layout {
...
@@ -1087,11 +1122,12 @@ private extension Layout {
If the constraint already exists, will update its constant.
If the constraint already exists, will update its constant.
- Parameter _ attribute: A LayoutAttribute.
- Parameter _ attribute: A LayoutAttribute.
- Parameter to anchor: A LayoutAnchorable.
- Parameter to anchor: A LayoutAnchorable.
- Parameter relation: A LayoutRelation between anchors.
- Parameter constant: A CGFloat.
- Parameter constant: A CGFloat.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
func
constraint
(
_
attribute
:
LayoutAttribute
,
to
anchor
:
LayoutAnchorable
,
constant
:
CGFloat
)
->
Layout
{
func
constraint
(
_
attribute
:
LayoutAttribute
,
to
anchor
:
LayoutAnchorable
,
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
,
constant
:
CGFloat
)
->
Layout
{
return
constraint
([
attribute
],
to
:
anchor
,
constants
:
constant
)
return
constraint
([
attribute
],
to
:
anchor
,
relationer
:
relationer
,
constants
:
constant
)
}
}
/**
/**
...
@@ -1099,11 +1135,12 @@ private extension Layout {
...
@@ -1099,11 +1135,12 @@ private extension Layout {
If any of the constraints already exists, will update its constant.
If any of the constraints already exists, will update its constant.
- Parameter _ attributes: An array of LayoutAttribute.
- Parameter _ attributes: An array of LayoutAttribute.
- Parameter to anchor: A LayoutAnchorable.
- Parameter to anchor: A LayoutAnchorable.
- Parameter relation: A LayoutRelation between anchors.
- Parameter constants: A list of CGFloat.
- Parameter constants: A list of CGFloat.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
func
constraint
(
_
attributes
:
[
LayoutAttribute
],
to
anchor
:
LayoutAnchorable
,
constants
:
CGFloat
...
)
->
Layout
{
func
constraint
(
_
attributes
:
[
LayoutAttribute
],
to
anchor
:
LayoutAnchorable
,
relationer
:
LayoutRelationer
=
LayoutRelationerStruct
.
equal
,
constants
:
CGFloat
...
)
->
Layout
{
return
constraint
(
attributes
,
to
:
anchor
,
constants
:
constants
)
return
constraint
(
attributes
,
to
:
anchor
,
relationer
:
relationer
,
constants
:
constants
)
}
}
/**
/**
...
@@ -1111,17 +1148,18 @@ private extension Layout {
...
@@ -1111,17 +1148,18 @@ private extension Layout {
If any of the constraints already exists, will update its constant.
If any of the constraints already exists, will update its constant.
- Parameter _ attributes: An array of LayoutAttribute.
- Parameter _ attributes: An array of LayoutAttribute.
- Parameter to anchor: A LayoutAnchorable.
- Parameter to anchor: A LayoutAnchorable.
- Parameter relation: A LayoutRelation between anchors.
- Parameter constants: An array of CGFloat.
- Parameter constants: An array of CGFloat.
- Returns: A Layout instance to allow chaining.
- Returns: A Layout instance to allow chaining.
*/
*/
func
constraint
(
_
attributes
:
[
LayoutAttribute
],
to
anchor
:
LayoutAnchorable
,
constants
:
[
CGFloat
])
->
Layout
{
func
constraint
(
_
attributes
:
[
LayoutAttribute
],
to
anchor
:
LayoutAnchorable
,
relationer
:
LayoutRelationer
,
constants
:
[
CGFloat
])
->
Layout
{
let
from
=
LayoutAnchor
(
constraintable
:
constraintable
,
attributes
:
attributes
)
let
from
=
LayoutAnchor
(
constraintable
:
constraintable
,
attributes
:
attributes
)
var
to
=
anchor
as?
LayoutAnchor
var
to
=
anchor
as?
LayoutAnchor
if
to
?
.
attributes
.
isEmpty
??
true
{
if
to
?
.
attributes
.
isEmpty
??
true
{
let
v
=
(
anchor
as?
UIView
)
??
(
anchor
as?
LayoutAnchor
)?
.
constraintable
let
v
=
(
anchor
as?
UIView
)
??
(
anchor
as?
LayoutAnchor
)?
.
constraintable
to
=
LayoutAnchor
(
constraintable
:
v
,
attributes
:
attributes
)
to
=
LayoutAnchor
(
constraintable
:
v
,
attributes
:
attributes
)
}
}
let
constraint
=
LayoutConstraint
(
fromAnchor
:
from
,
toAnchor
:
to
!
,
constants
:
constants
)
let
constraint
=
LayoutConstraint
(
fromAnchor
:
from
,
toAnchor
:
to
!
,
relation
:
relationer
(
.
nil
,
.
nil
),
constants
:
constants
)
let
constraints
=
(
view
?
.
constraints
??
[])
+
(
view
?
.
superview
?
.
constraints
??
[])
let
constraints
=
(
view
?
.
constraints
??
[])
+
(
view
?
.
superview
?
.
constraints
??
[])
...
@@ -1139,3 +1177,36 @@ private extension Layout {
...
@@ -1139,3 +1177,36 @@ private extension Layout {
return
self
return
self
}
}
}
}
/// A closure typealias for relation operators.
public
typealias
LayoutRelationer
=
(
LayoutRelationerStruct
,
LayoutRelationerStruct
)
->
LayoutRelation
/// A dummy struct used in creating relation operators (==, >=, <=).
public
struct
LayoutRelationerStruct
{
/// Passed as an unused argument to the LayoutRelationer closures.
static
let
`
nil
`
=
LayoutRelationerStruct
()
/**
A method used as a default parameter for LayoutRelationer closures.
Swift does not allow using == operator directly, so we had to create this.
*/
public
static
func
equal
(
left
:
LayoutRelationerStruct
,
right
:
LayoutRelationerStruct
)
->
LayoutRelation
{
return
.
equal
}
}
/// A method returning `LayoutRelation.equal`
public
func
==
(
left
:
LayoutRelationerStruct
,
right
:
LayoutRelationerStruct
)
->
LayoutRelation
{
return
.
equal
}
/// A method returning `LayoutRelation.greaterThanOrEqual`
public
func
>=
(
left
:
LayoutRelationerStruct
,
right
:
LayoutRelationerStruct
)
->
LayoutRelation
{
return
.
greaterThanOrEqual
}
/// A method returning `LayoutRelation.lessThanOrEqual`
public
func
<=
(
left
:
LayoutRelationerStruct
,
right
:
LayoutRelationerStruct
)
->
LayoutRelation
{
return
.
lessThanOrEqual
}
Sources/iOS/Layout/LayoutConstraint.swift
View file @
a944d77d
...
@@ -25,6 +25,9 @@
...
@@ -25,6 +25,9 @@
import
UIKit
import
UIKit
/// A typealias for NSLayoutConstraint.Relation
public
typealias
LayoutRelation
=
NSLayoutConstraint
.
Relation
internal
struct
LayoutConstraint
{
internal
struct
LayoutConstraint
{
/// `From` anchor for the constraint.
/// `From` anchor for the constraint.
private
let
fromAnchor
:
LayoutAnchor
private
let
fromAnchor
:
LayoutAnchor
...
@@ -33,17 +36,23 @@ internal struct LayoutConstraint {
...
@@ -33,17 +36,23 @@ internal struct LayoutConstraint {
private
let
toAnchor
:
LayoutAnchor
private
let
toAnchor
:
LayoutAnchor
/// An array of constants for the constraint.
/// An array of constants for the constraint.
private
var
constants
:
[
CGFloat
]
private
let
constants
:
[
CGFloat
]
/// A LayoutRelation between anchors.
private
let
relation
:
LayoutRelation
/**
/**
An initializer taking `from` and `to` anchors and constants for the constraint.
An initializer taking `from` and `to` anchors
, their `relation`
and constants for the constraint.
- Parameter fromAnchor: A LayoutAnchor.
- Parameter fromAnchor: A LayoutAnchor.
- Parameter toAnchor: A LayoutAnchor.
- Parameter toAnchor: A LayoutAnchor.
- Parameter relation: A LayoutRelation between anchors.
- Parameter constants: An array of CGFloat.
- Parameter constants: An array of CGFloat.
*/
*/
init
(
fromAnchor
:
LayoutAnchor
,
toAnchor
:
LayoutAnchor
,
constants
:
[
CGFloat
])
{
init
(
fromAnchor
:
LayoutAnchor
,
toAnchor
:
LayoutAnchor
,
relation
:
LayoutRelation
,
constants
:
[
CGFloat
])
{
self
.
fromAnchor
=
fromAnchor
self
.
fromAnchor
=
fromAnchor
self
.
toAnchor
=
toAnchor
self
.
toAnchor
=
toAnchor
self
.
relation
=
relation
self
.
constants
=
constants
self
.
constants
=
constants
}
}
}
}
...
@@ -64,7 +73,7 @@ internal extension LayoutConstraint {
...
@@ -64,7 +73,7 @@ internal extension LayoutConstraint {
zip
(
zip
(
fromAnchor
.
attributes
,
toAnchor
.
attributes
),
constants
)
.
forEach
{
zip
(
zip
(
fromAnchor
.
attributes
,
toAnchor
.
attributes
),
constants
)
.
forEach
{
v
.
append
(
NSLayoutConstraint
(
item
:
fromAnchor
.
constraintable
as
Any
,
v
.
append
(
NSLayoutConstraint
(
item
:
fromAnchor
.
constraintable
as
Any
,
attribute
:
$0
.
0
,
attribute
:
$0
.
0
,
relatedBy
:
.
equal
,
relatedBy
:
relation
,
toItem
:
toAnchor
.
constraintable
,
toItem
:
toAnchor
.
constraintable
,
attribute
:
$0
.
1
,
attribute
:
$0
.
1
,
multiplier
:
1
,
multiplier
:
1
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment