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
085dacdb
Unverified
Commit
085dacdb
authored
Nov 10, 2016
by
Daniel Dahan
Browse files
Options
Browse Files
Download
Plain Diff
editor: added memory updates
parents
81e6a5c8
f9213969
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
66 additions
and
116 deletions
+66
-116
Material.xcodeproj/project.pbxproj
+0
-0
Sources/iOS/Bar.swift
+12
-19
Sources/iOS/BottomTabBar.swift
+0
-4
Sources/iOS/Button.swift
+0
-4
Sources/iOS/CollectionReusableView.swift
+0
-4
Sources/iOS/CollectionViewCell.swift
+0
-4
Sources/iOS/Grid.swift
+1
-1
Sources/iOS/NavigationBar.swift
+0
-4
Sources/iOS/NavigationItem.swift
+0
-3
Sources/iOS/SearchBar.swift
+0
-10
Sources/iOS/StatusBarController.swift
+1
-1
Sources/iOS/TableViewCell.swift
+0
-4
Sources/iOS/TextField.swift
+0
-4
Sources/iOS/TextView.swift
+33
-31
Sources/iOS/Toolbar.swift
+0
-10
Sources/iOS/View.swift
+19
-13
No files found.
Material.xcodeproj/project.pbxproj
View file @
085dacdb
This diff is collapsed.
Click to expand it.
Sources/iOS/Bar.swift
View file @
085dacdb
...
...
@@ -102,10 +102,10 @@ open class Bar: View {
}
/// ContentView that holds the any desired subviews.
open
private(set)
lazy
var
contentView
=
View
()
open
fileprivate
(
set
)
lazy
var
contentView
=
UI
View
()
/// Left side UIViews.
open
var
leftViews
=
[
UIView
]()
{
open
var
leftViews
:
[
UIView
]
{
didSet
{
for
v
in
oldValue
{
v
.
removeFromSuperview
()
...
...
@@ -115,7 +115,7 @@ open class Bar: View {
}
/// Right side UIViews.
open
var
rightViews
=
[
UIView
]()
{
open
var
rightViews
:
[
UIView
]
{
didSet
{
for
v
in
oldValue
{
v
.
removeFromSuperview
()
...
...
@@ -130,9 +130,6 @@ open class Bar: View {
return
contentView
.
grid
.
views
}
set
(
value
)
{
for
v
in
contentView
.
grid
.
views
{
v
.
removeFromSuperview
()
}
contentView
.
grid
.
views
=
value
}
}
...
...
@@ -142,6 +139,8 @@ open class Bar: View {
- Parameter aDecoder: A NSCoder instance.
*/
public
required
init
?(
coder
aDecoder
:
NSCoder
)
{
leftViews
=
[]
rightViews
=
[]
super
.
init
(
coder
:
aDecoder
)
}
...
...
@@ -152,13 +151,14 @@ open class Bar: View {
- Parameter frame: A CGRect instance.
*/
public
override
init
(
frame
:
CGRect
)
{
leftViews
=
[]
rightViews
=
[]
super
.
init
(
frame
:
frame
)
}
/// Basic initializer.
public
init
()
{
super
.
init
(
frame
:
.
zero
)
frame
.
size
=
intrinsicContentSize
/// Convenience initializer.
public
convenience
init
()
{
self
.
init
(
frame
:
.
zero
)
}
/**
...
...
@@ -167,12 +167,11 @@ open class Bar: View {
- Parameter rightViews: An Array of UIViews that go on the right side.
- Parameter centerViews: An Array of UIViews that go in the center.
*/
public
init
(
leftViews
:
[
UIView
]?
=
nil
,
rightViews
:
[
UIView
]?
=
nil
,
centerViews
:
[
UIView
]?
=
nil
)
{
s
uper
.
init
(
frame
:
.
zero
)
public
convenience
init
(
leftViews
:
[
UIView
]?
=
nil
,
rightViews
:
[
UIView
]?
=
nil
,
centerViews
:
[
UIView
]?
=
nil
)
{
s
elf
.
init
(
)
self
.
leftViews
=
leftViews
??
[]
self
.
rightViews
=
rightViews
??
[]
self
.
centerViews
=
centerViews
??
[]
frame
.
size
=
intrinsicContentSize
}
open
override
func
layoutSubviews
()
{
...
...
@@ -275,11 +274,5 @@ open class Bar: View {
autoresizingMask
=
.
flexibleWidth
interimSpacePreset
=
.
interimSpace3
contentEdgeInsetsPreset
=
.
square1
prepareContentView
()
}
/// Prepares the contentView.
private
func
prepareContentView
()
{
contentView
.
backgroundColor
=
nil
}
}
Sources/iOS/BottomTabBar.swift
View file @
085dacdb
...
...
@@ -76,10 +76,6 @@ open class BottomTabBar: UITabBar {
open
override
func
layoutSublayers
(
of
layer
:
CALayer
)
{
super
.
layoutSublayers
(
of
:
layer
)
guard
self
.
layer
==
layer
else
{
return
}
layoutShape
()
}
...
...
Sources/iOS/Button.swift
View file @
085dacdb
...
...
@@ -165,10 +165,6 @@ open class Button: UIButton {
open
override
func
layoutSublayers
(
of
layer
:
CALayer
)
{
super
.
layoutSublayers
(
of
:
layer
)
guard
self
.
layer
==
layer
else
{
return
}
layoutShape
()
layoutVisualLayer
()
}
...
...
Sources/iOS/CollectionReusableView.swift
View file @
085dacdb
...
...
@@ -219,10 +219,6 @@ open class CollectionReusableView: UICollectionReusableView {
open
override
func
layoutSublayers
(
of
layer
:
CALayer
)
{
super
.
layoutSublayers
(
of
:
layer
)
guard
self
.
layer
==
layer
else
{
return
}
layoutShape
()
layoutVisualLayer
()
}
...
...
Sources/iOS/CollectionViewCell.swift
View file @
085dacdb
...
...
@@ -226,10 +226,6 @@ open class CollectionViewCell: UICollectionViewCell {
open
override
func
layoutSublayers
(
of
layer
:
CALayer
)
{
super
.
layoutSublayers
(
of
:
layer
)
guard
self
.
layer
==
layer
else
{
return
}
layoutShape
()
layoutVisualLayer
()
}
...
...
Sources/iOS/Grid.swift
View file @
085dacdb
...
...
@@ -269,7 +269,7 @@ private var GridKey: UInt8 = 0
/// Grid extension for UIView.
extension
UIView
{
/// Grid reference.
public
private(set)
var
grid
:
Grid
{
public
file
private
(
set
)
var
grid
:
Grid
{
get
{
return
AssociatedObject
(
base
:
self
,
key
:
&
GridKey
)
{
return
Grid
(
context
:
self
)
...
...
Sources/iOS/NavigationBar.swift
View file @
085dacdb
...
...
@@ -134,10 +134,6 @@ open class NavigationBar: UINavigationBar {
open
override
func
layoutSublayers
(
of
layer
:
CALayer
)
{
super
.
layoutSublayers
(
of
:
layer
)
guard
self
.
layer
==
layer
else
{
return
}
layoutShape
()
}
...
...
Sources/iOS/NavigationItem.swift
View file @
085dacdb
...
...
@@ -80,9 +80,6 @@ public class NavigationItem: NSObject {
return
contentView
.
grid
.
views
}
set
(
value
)
{
for
v
in
contentView
.
grid
.
views
{
v
.
removeFromSuperview
()
}
contentView
.
grid
.
views
=
value
}
}
...
...
Sources/iOS/SearchBar.swift
View file @
085dacdb
...
...
@@ -152,16 +152,6 @@ open class SearchBar: Bar {
}
/**
A convenience initializer with parameter settings.
- Parameter leftViews: An Array of UIViews that go on the left side.
- Parameter rightViews: An Array of UIViews that go on the right side.
- Parameter centerViews: An Array of UIViews that go in the center.
*/
public
override
init
(
leftViews
:
[
UIView
]?
=
nil
,
rightViews
:
[
UIView
]?
=
nil
,
centerViews
:
[
UIView
]?
=
nil
)
{
super
.
init
(
leftViews
:
leftViews
,
rightViews
:
rightViews
,
centerViews
:
centerViews
)
}
/**
Prepares the view instance when intialized. When subclassing,
it is recommended to override the prepare method
to initialize property values and other setup operations.
...
...
Sources/iOS/StatusBarController.swift
View file @
085dacdb
...
...
@@ -50,7 +50,7 @@ extension UIViewController {
open
class
StatusBarController
:
RootController
{
/// A reference to the statusBar.
open
private(set)
lazy
var
statusBar
=
View
()
open
private(set)
lazy
var
statusBar
:
View
=
View
()
open
override
var
isStatusBarHidden
:
Bool
{
didSet
{
...
...
Sources/iOS/TableViewCell.swift
View file @
085dacdb
...
...
@@ -103,10 +103,6 @@ open class TableViewCell: UITableViewCell {
open
override
func
layoutSublayers
(
of
layer
:
CALayer
)
{
super
.
layoutSublayers
(
of
:
layer
)
guard
self
.
layer
==
layer
else
{
return
}
layoutShape
()
layoutVisualLayer
()
}
...
...
Sources/iOS/TextField.swift
View file @
085dacdb
...
...
@@ -381,10 +381,6 @@ open class TextField: UITextField {
open
override
func
layoutSublayers
(
of
layer
:
CALayer
)
{
super
.
layoutSublayers
(
of
:
layer
)
guard
self
.
layer
==
layer
else
{
return
}
layoutShape
()
}
...
...
Sources/iOS/TextView.swift
View file @
085dacdb
...
...
@@ -34,9 +34,10 @@ import UIKit
public
protocol
TextViewDelegate
:
UITextViewDelegate
{}
@objc(TextView)
public
class
TextView
:
UITextView
{
open
class
TextView
:
UITextView
{
/// A property that accesses the backing layer's background
@IBInspectable
public
override
var
backgroundColor
:
UIColor
?
{
@IBInspectable
open
override
var
backgroundColor
:
UIColor
?
{
didSet
{
layer
.
backgroundColor
=
backgroundColor
?
.
cgColor
}
...
...
@@ -47,44 +48,49 @@ public class TextView: UITextView {
titleLabel text value is updated with the placeholderLabel
text value before being displayed.
*/
public
var
titleLabel
:
UILabel
?
{
@IBInspectable
open
var
titleLabel
:
UILabel
?
{
didSet
{
prepareTitleLabel
()
}
}
/// The color of the titleLabel text when the textView is not active.
@IBInspectable
public
var
titleLabelColor
:
UIColor
?
{
@IBInspectable
open
var
titleLabelColor
:
UIColor
?
{
didSet
{
titleLabel
?
.
textColor
=
titleLabelColor
}
}
/// The color of the titleLabel text when the textView is active.
@IBInspectable
public
var
titleLabelActiveColor
:
UIColor
?
@IBInspectable
open
var
titleLabelActiveColor
:
UIColor
?
/**
A property that sets the distance between the textView and
titleLabel.
*/
@IBInspectable
public
var
titleLabelAnimationDistance
:
CGFloat
=
8
@IBInspectable
open
var
titleLabelAnimationDistance
:
CGFloat
=
8
/// Placeholder UILabel view.
public
var
placeholderLabel
:
UILabel
?
{
open
var
placeholderLabel
:
UILabel
?
{
didSet
{
preparePlaceholderLabel
()
}
}
/// An override to the text property.
@IBInspectable
public
override
var
text
:
String
!
{
@IBInspectable
open
override
var
text
:
String
!
{
didSet
{
handleTextViewTextDidChange
()
}
}
/// An override to the attributedText property.
public
override
var
attributedText
:
NSAttributedString
!
{
open
override
var
attributedText
:
NSAttributedString
!
{
didSet
{
handleTextViewTextDidChange
()
}
...
...
@@ -94,16 +100,16 @@ public class TextView: UITextView {
Text container UIEdgeInset preset property. This updates the
textContainerInset property with a preset value.
*/
public
var
textContainerEdgeInsetsPreset
:
EdgeInsetsPreset
=
.
none
{
open
var
textContainerEdgeInsetsPreset
:
EdgeInsetsPreset
=
.
none
{
didSet
{
textContainerInset
=
EdgeInsetsPresetToValue
(
preset
:
textContainerEdgeInsetsPreset
)
}
}
/// Text container UIEdgeInset property.
public
override
var
textContainerInset
:
EdgeInsets
{
open
override
var
textContainerInset
:
EdgeInsets
{
didSet
{
reload
View
()
reload
()
}
}
...
...
@@ -143,16 +149,12 @@ public class TextView: UITextView {
removeNotificationHandlers
()
}
public
override
func
layoutSublayers
(
of
layer
:
CALayer
)
{
open
override
func
layoutSublayers
(
of
layer
:
CALayer
)
{
super
.
layoutSublayers
(
of
:
layer
)
guard
self
.
layer
==
layer
else
{
return
}
layoutShape
()
}
public
override
func
layoutSubviews
()
{
open
override
func
layoutSubviews
()
{
super
.
layoutSubviews
()
layoutShadowPath
()
placeholderLabel
?
.
preferredMaxLayoutWidth
=
textContainer
.
size
.
width
-
textContainer
.
lineFragmentPadding
*
2
...
...
@@ -160,7 +162,7 @@ public class TextView: UITextView {
}
/// Reloads necessary components when the view has changed.
internal
func
reloadView
()
{
open
func
reload
()
{
if
let
p
=
placeholderLabel
{
removeConstraints
(
constraints
)
layout
(
p
)
.
edges
(
...
...
@@ -173,13 +175,13 @@ public class TextView: UITextView {
/// Notification handler for when text editing began.
@objc
internal
func
handleTextViewTextDidBegin
()
{
fileprivate
func
handleTextViewTextDidBegin
()
{
titleLabel
?
.
textColor
=
titleLabelActiveColor
}
/// Notification handler for when text changed.
@objc
internal
func
handleTextViewTextDidChange
()
{
fileprivate
func
handleTextViewTextDidChange
()
{
if
let
p
=
placeholderLabel
{
p
.
isHidden
=
!
(
true
==
text
?
.
isEmpty
)
}
...
...
@@ -198,7 +200,7 @@ public class TextView: UITextView {
/// Notification handler for when text editing ended.
@objc
internal
func
handleTextViewTextDidEnd
()
{
fileprivate
func
handleTextViewTextDidEnd
()
{
guard
let
t
=
text
else
{
hideTitleLabel
()
return
...
...
@@ -220,31 +222,31 @@ public class TextView: UITextView {
The super.prepare method should always be called immediately
when subclassing.
*/
public
func
prepare
()
{
open
func
prepare
()
{
contentScaleFactor
=
Device
.
scale
textContainerInset
=
.
zero
backgroundColor
=
.
white
clipsToBounds
=
false
removeNotificationHandlers
()
prepareNotificationHandlers
()
reload
View
()
reload
()
}
/// prepares the placeholderLabel property.
private
func
preparePlaceholderLabel
()
{
file
private
func
preparePlaceholderLabel
()
{
if
let
v
:
UILabel
=
placeholderLabel
{
v
.
font
=
font
v
.
textAlignment
=
textAlignment
v
.
numberOfLines
=
0
v
.
backgroundColor
=
.
clear
addSubview
(
v
)
reload
View
()
reload
()
handleTextViewTextDidChange
()
}
}
/// Prepares the titleLabel property.
private
func
prepareTitleLabel
()
{
file
private
func
prepareTitleLabel
()
{
if
let
v
:
UILabel
=
titleLabel
{
v
.
isHidden
=
true
addSubview
(
v
)
...
...
@@ -259,7 +261,7 @@ public class TextView: UITextView {
}
/// Shows and animates the titleLabel property.
private
func
showTitleLabel
()
{
file
private
func
showTitleLabel
()
{
if
let
v
:
UILabel
=
titleLabel
{
if
v
.
isHidden
{
if
let
s
:
String
=
placeholderLabel
?
.
text
{
...
...
@@ -279,7 +281,7 @@ public class TextView: UITextView {
}
/// Hides and animates the titleLabel property.
private
func
hideTitleLabel
()
{
file
private
func
hideTitleLabel
()
{
if
let
v
:
UILabel
=
titleLabel
{
if
!
v
.
isHidden
{
UIView
.
animate
(
withDuration
:
0.25
,
animations
:
{
...
...
@@ -293,7 +295,7 @@ public class TextView: UITextView {
}
/// Prepares the Notification handlers.
private
func
prepareNotificationHandlers
()
{
file
private
func
prepareNotificationHandlers
()
{
let
defaultCenter
=
NotificationCenter
.
default
defaultCenter
.
addObserver
(
self
,
selector
:
#selector(
handleTextViewTextDidBegin
)
,
name
:
NSNotification
.
Name
.
UITextViewTextDidBeginEditing
,
object
:
self
)
defaultCenter
.
addObserver
(
self
,
selector
:
#selector(
handleTextViewTextDidChange
)
,
name
:
NSNotification
.
Name
.
UITextViewTextDidChange
,
object
:
self
)
...
...
@@ -301,7 +303,7 @@ public class TextView: UITextView {
}
/// Removes the Notification handlers.
private
func
removeNotificationHandlers
()
{
file
private
func
removeNotificationHandlers
()
{
let
defaultCenter
=
NotificationCenter
.
default
defaultCenter
.
removeObserver
(
self
,
name
:
NSNotification
.
Name
.
UITextViewTextDidBeginEditing
,
object
:
self
)
defaultCenter
.
removeObserver
(
self
,
name
:
NSNotification
.
Name
.
UITextViewTextDidChange
,
object
:
self
)
...
...
Sources/iOS/Toolbar.swift
View file @
085dacdb
...
...
@@ -83,16 +83,6 @@ open class Toolbar: Bar {
super
.
init
(
frame
:
frame
)
}
/**
A convenience initializer with parameter settings.
- Parameter leftViews: An Array of UIViews that go on the left side.
- Parameter rightViews: An Array of UIViews that go on the right side.
- Parameter centerViews: An Array of UIViews that go in the center.
*/
public
override
init
(
leftViews
:
[
UIView
]?
=
nil
,
rightViews
:
[
UIView
]?
=
nil
,
centerViews
:
[
UIView
]?
=
nil
)
{
super
.
init
(
leftViews
:
leftViews
,
rightViews
:
rightViews
,
centerViews
:
centerViews
)
}
open
override
func
observeValue
(
forKeyPath
keyPath
:
String
?,
of
object
:
Any
?,
change
:
[
NSKeyValueChangeKey
:
Any
]?,
context
:
UnsafeMutableRawPointer
?)
{
guard
"titleLabel.textAlignment"
==
keyPath
else
{
super
.
observeValue
(
forKeyPath
:
keyPath
,
of
:
object
,
change
:
change
,
context
:
context
)
...
...
Sources/iOS/View.swift
View file @
085dacdb
...
...
@@ -37,7 +37,7 @@ open class View: UIView {
allows the dropshadow effect on the backing layer, while clipping
the image to a desired shape within the visualLayer.
*/
open
private(set)
lazy
var
visualLayer
=
CAShapeLayer
()
open
file
private
(
set
)
lazy
var
visualLayer
=
CAShapeLayer
()
/**
A property that manages an image for the visualLayer's contents
...
...
@@ -46,8 +46,15 @@ open class View: UIView {
*/
@IBInspectable
open
var
image
:
UIImage
?
{
didSet
{
visualLayer
.
contents
=
image
?
.
cgImage
get
{
guard
let
v
=
visualLayer
.
contents
else
{
return
nil
}
return
UIImage
(
cgImage
:
v
as!
CGImage
)
}
set
(
value
)
{
visualLayer
.
contents
=
value
?
.
cgImage
}
}
...
...
@@ -98,7 +105,7 @@ open class View: UIView {
/// A Preset for the contentsGravity property.
@IBInspectable
open
var
contentsGravityPreset
:
Gravity
{
open
var
contentsGravityPreset
=
Gravity
.
resize
{
didSet
{
contentsGravity
=
GravityToValue
(
gravity
:
contentsGravityPreset
)
}
...
...
@@ -128,7 +135,6 @@ open class View: UIView {
- Parameter aDecoder: A NSCoder instance.
*/
public
required
init
?(
coder
aDecoder
:
NSCoder
)
{
contentsGravityPreset
=
.
resizeAspectFill
super
.
init
(
coder
:
aDecoder
)
prepare
()
}
...
...
@@ -140,22 +146,18 @@ open class View: UIView {
- Parameter frame: A CGRect instance.
*/
public
override
init
(
frame
:
CGRect
)
{
contentsGravityPreset
=
.
resizeAspectFill
super
.
init
(
frame
:
frame
)
prepare
()
}
/// A c
onvenience initializer.
/// C
onvenience initializer.
public
convenience
init
()
{
self
.
init
(
frame
:
.
zero
)
prepare
()
}
open
override
func
layoutSublayers
(
of
layer
:
CALayer
)
{
super
.
layoutSublayers
(
of
:
layer
)
guard
self
.
layer
==
layer
else
{
return
}
layoutShape
()
layoutVisualLayer
()
}
...
...
@@ -177,16 +179,20 @@ open class View: UIView {
backgroundColor
=
.
white
prepareVisualLayer
()
}
}
extension
View
{
/// Prepares the visualLayer property.
internal
func
prepareVisualLayer
()
{
fileprivate
func
prepareVisualLayer
()
{
visualLayer
.
zPosition
=
0
visualLayer
.
masksToBounds
=
true
layer
.
addSublayer
(
visualLayer
)
}
}
extension
View
{
/// Manages the layout for the visualLayer property.
internal
func
layoutVisualLayer
()
{
fileprivate
func
layoutVisualLayer
()
{
visualLayer
.
frame
=
bounds
visualLayer
.
cornerRadius
=
cornerRadius
}
...
...
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