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