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
4309031e
Commit
4309031e
authored
Aug 21, 2016
by
Daniel Dahan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
development: added optional divider for all UIViews
parent
1185c534
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
158 additions
and
26 deletions
+158
-26
Sources/iOS/Card.swift
+1
-1
Sources/iOS/ImageCard.swift
+1
-1
Sources/iOS/Material+CALayer.swift
+26
-16
Sources/iOS/Material+UIView.swift
+109
-0
Sources/iOS/PhotoLibraryController.swift
+12
-0
Sources/iOS/TabBar.swift
+5
-4
Sources/iOS/TextField.swift
+4
-4
No files found.
Sources/iOS/Card.swift
View file @
4309031e
...
...
@@ -40,7 +40,7 @@ open class Card: PulseView {
:name: dividerColor
*/
@IBInspectable
open
var
dividerColor
:
UIColor
?
{
open
override
var
dividerColor
:
UIColor
?
{
didSet
{
dividerLayer
?
.
backgroundColor
=
dividerColor
?
.
cgColor
}
...
...
Sources/iOS/ImageCard.swift
View file @
4309031e
...
...
@@ -40,7 +40,7 @@ open class ImageCard: PulseView {
:name: dividerColor
*/
@IBInspectable
open
var
dividerColor
:
UIColor
?
{
open
override
var
dividerColor
:
UIColor
?
{
didSet
{
dividerLayer
?
.
backgroundColor
=
dividerColor
?
.
cgColor
}
...
...
Sources/iOS/Material+CALayer.swift
View file @
4309031e
...
...
@@ -30,20 +30,12 @@
import
UIKit
open
class
MaterialLayer
{
/// A reference to the
UIView
.
internal
class
MaterialLayer
{
/// A reference to the
CALayer
.
internal
weak
var
layer
:
CALayer
?
/**
Initializer that takes in a UIView.
- Parameter view: A UIView reference.
*/
internal
init
(
layer
:
CALayer
?)
{
self
.
layer
=
layer
}
/// A property that sets the cornerRadius of the backing layer.
open
var
cornerRadiusPreset
:
CornerRadiusPreset
=
.
none
{
internal
var
cornerRadiusPreset
:
CornerRadiusPreset
=
.
none
{
didSet
{
guard
let
v
=
layer
else
{
return
...
...
@@ -53,7 +45,7 @@ open class MaterialLayer {
}
/// A preset property to set the borderWidth.
open
var
borderWidthPreset
:
BorderWidthPreset
=
.
none
{
internal
var
borderWidthPreset
:
BorderWidthPreset
=
.
none
{
didSet
{
guard
let
v
=
layer
else
{
return
...
...
@@ -63,10 +55,10 @@ open class MaterialLayer {
}
/// A preset property to set the shape.
open
var
shapePreset
:
ShapePreset
=
.
none
internal
var
shapePreset
:
ShapePreset
=
.
none
/// A preset value for Depth.
open
var
depthPreset
:
DepthPreset
{
internal
var
depthPreset
:
DepthPreset
{
get
{
return
depth
.
preset
}
...
...
@@ -76,7 +68,7 @@ open class MaterialLayer {
}
/// Grid reference.
open
var
depth
=
Depth
.
zero
{
internal
var
depth
=
Depth
.
zero
{
didSet
{
guard
let
v
=
layer
else
{
return
...
...
@@ -90,13 +82,21 @@ open class MaterialLayer {
}
/// Enables automatic shadowPath sizing.
open
var
isShadowPathAutoSizing
=
false
{
internal
var
isShadowPathAutoSizing
=
false
{
didSet
{
if
isShadowPathAutoSizing
{
layer
?
.
layoutShadowPath
()
}
}
}
/**
Initializer that takes in a CALayer.
- Parameter view: A CALayer reference.
*/
internal
init
(
layer
:
CALayer
?)
{
self
.
layer
=
layer
}
}
/// A memory reference to the MaterialLayer instance for CALayer extensions.
...
...
@@ -243,6 +243,16 @@ extension CALayer {
}
}
/// A UIColor reference to the `backgroundColor.cgColor`.
open
var
color
:
UIColor
?
{
get
{
return
nil
==
backgroundColor
?
nil
:
UIColor
(
cgColor
:
backgroundColor
!
)
}
set
(
value
)
{
backgroundColor
=
color
?
.
cgColor
}
}
/**
A method that accepts CAAnimation objects and executes them on the
view's backing layer.
...
...
Sources/iOS/Material+UIView.swift
View file @
4309031e
...
...
@@ -30,8 +30,112 @@
import
UIKit
@objc(DividerAlignment)
public
enum
DividerAlignment
:
Int
{
case
top
case
left
case
bottom
case
right
}
open
class
MaterialView
{
/// A reference to the UIView.
internal
weak
var
view
:
UIView
?
/// A reference to the divider UIView.
internal
var
divider
:
UIView
?
/// Divider color.
open
var
dividerColor
:
UIColor
?
{
get
{
return
divider
?
.
backgroundColor
}
set
(
value
)
{
guard
let
v
=
value
else
{
divider
?
.
removeFromSuperview
()
divider
=
nil
return
}
if
nil
==
divider
{
divider
=
UIView
()
divider
?
.
zPosition
=
5000
view
?
.
addSubview
(
divider
!
)
layoutDivider
()
}
divider
?
.
backgroundColor
=
v
}
}
/// A reference to the dividerAlignment.
internal
var
dividerAlignment
=
DividerAlignment
.
top
{
didSet
{
layoutDivider
()
}
}
/**
Initializer that takes in a UIView.
- Parameter view: A UIView reference.
*/
internal
init
(
view
:
UIView
?)
{
self
.
view
=
view
}
/// Lays out the divider.
internal
func
layoutDivider
()
{
guard
let
v
=
view
else
{
return
}
guard
let
d
=
divider
else
{
return
}
switch
dividerAlignment
{
case
.
top
:
d
.
frame
=
CGRect
(
x
:
0
,
y
:
0
,
width
:
v
.
width
,
height
:
1
)
case
.
bottom
:
d
.
frame
=
CGRect
(
x
:
0
,
y
:
v
.
height
-
1
,
width
:
v
.
width
,
height
:
1
)
case
.
left
:
d
.
frame
=
CGRect
(
x
:
0
,
y
:
0
,
width
:
1
,
height
:
v
.
height
)
case
.
right
:
d
.
frame
=
CGRect
(
x
:
v
.
width
-
1
,
y
:
0
,
width
:
1
,
height
:
v
.
height
)
}
}
}
/// A memory reference to the MaterialView instance for UIView extensions.
private
var
MaterialViewKey
:
UInt8
=
0
/// Grid extension for UIView.
extension
UIView
{
/// Layer Reference.
internal
var
materialView
:
MaterialView
{
get
{
return
AssociatedObject
(
base
:
self
,
key
:
&
MaterialViewKey
)
{
return
MaterialView
(
view
:
self
)
}
}
set
(
value
)
{
AssociateObject
(
base
:
self
,
key
:
&
MaterialViewKey
,
value
:
value
)
}
}
/// Divider color.
open
var
dividerColor
:
UIColor
?
{
get
{
return
materialView
.
dividerColor
}
set
(
value
)
{
materialView
.
dividerColor
=
value
}
}
/// Divider alignment.
open
var
dividerAlignment
:
DividerAlignment
{
return
materialView
.
dividerAlignment
}
/// A property that accesses the frame.origin.x property.
@IBInspectable
open
var
x
:
CGFloat
{
...
...
@@ -288,4 +392,9 @@ extension UIView {
open
func
layoutShadowPath
()
{
layer
.
layoutShadowPath
()
}
/// Lays out the divider.
open
func
layoutDivider
()
{
materialView
.
layoutDivider
()
}
}
Sources/iOS/PhotoLibraryController.swift
View file @
4309031e
...
...
@@ -36,6 +36,18 @@ open class PhotoLibraryController: UIViewController, PhotoLibraryDelegate {
open
override
func
viewDidLoad
()
{
super
.
viewDidLoad
()
prepareView
()
}
/**
Prepares the view instance when intialized. When subclassing,
it is recommended to override the prepareView method
to initialize property values and other setup operations.
The super.prepareView method should always be called immediately
when subclassing.
*/
open
func
prepareView
()
{
view
.
contentScaleFactor
=
Device
.
scale
preparePhotoLibrary
()
}
...
...
Sources/iOS/TabBar.swift
View file @
4309031e
...
...
@@ -37,9 +37,9 @@ public enum TabBarLineAlignment: Int {
}
open
class
TabBar
:
View
{
/// A reference to the line UIView.
/// A reference to the line UIView.
open
internal(set)
var
line
:
UIView
!
/// A value for the line alignment.
open
var
lineAlignment
=
TabBarLineAlignment
.
bottom
{
didSet
{
...
...
@@ -92,7 +92,7 @@ open class TabBar: View {
}
open
override
var
intrinsicContentSize
:
CGSize
{
return
CGSize
(
width
:
width
,
height
:
4
4
)
return
CGSize
(
width
:
width
,
height
:
4
9
)
}
/// Buttons.
...
...
@@ -109,7 +109,7 @@ open class TabBar: View {
layoutSubviews
()
}
}
open
override
func
layoutSubviews
()
{
super
.
layoutSubviews
()
if
willRenderView
{
...
...
@@ -125,6 +125,7 @@ open class TabBar: View {
grid
.
views
=
buttons
as
[
UIView
]
line
.
frame
=
CGRect
(
x
:
0
,
y
:
.
bottom
==
lineAlignment
?
height
-
3
:
0
,
width
:
buttons
.
first
!.
width
,
height
:
3
)
}
layoutDivider
()
}
}
...
...
Sources/iOS/TextField.swift
View file @
4309031e
...
...
@@ -63,10 +63,10 @@ open class TextField: UITextField {
/// Sets the divider.
@IBInspectable
open
var
dividerColor
=
Color
.
darkText
.
dividers
{
open
override
var
dividerColor
:
UIColor
?
{
didSet
{
if
!
isEditing
{
divider
.
backgroundColor
=
dividerColor
.
cgColor
divider
.
backgroundColor
=
dividerColor
?
.
cgColor
}
}
}
...
...
@@ -384,7 +384,7 @@ open class TextField: UITextField {
}
/// Layout the divider.
open
func
layoutDivider
()
{
open
override
func
layoutDivider
()
{
divider
.
frame
=
CGRect
(
x
:
0
,
y
:
height
,
width
:
width
,
height
:
isEditing
?
dividerActiveHeight
:
dividerHeight
)
}
...
...
@@ -451,7 +451,7 @@ open class TextField: UITextField {
/// The animation for the divider when editing ends.
open
func
dividerEditingDidEndAnimation
()
{
divider
.
frame
.
size
.
height
=
dividerHeight
divider
.
backgroundColor
=
dividerColor
.
cgColor
divider
.
backgroundColor
=
dividerColor
?
.
cgColor
}
/// The animation for the placeholder when editing begins.
...
...
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