Commit debf975c by Daniel Dahan

updated MaterialSwitch to detect trackLayer touches.

parent dd800745
......@@ -11,8 +11,6 @@
9656CD231C6CFA6200EBCEF1 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9656CD221C6CFA6200EBCEF1 /* ViewController.swift */; };
9656CD281C6CFA6200EBCEF1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9656CD271C6CFA6200EBCEF1 /* Assets.xcassets */; };
9656CD2B1C6CFA6200EBCEF1 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9656CD291C6CFA6200EBCEF1 /* LaunchScreen.storyboard */; };
96A71F241C72754D00C0C4AE /* Material.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 96A71F231C72754D00C0C4AE /* Material.framework */; };
96A71F251C72754D00C0C4AE /* Material.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 96A71F231C72754D00C0C4AE /* Material.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
......@@ -22,7 +20,6 @@
dstPath = "";
dstSubfolderSpec = 10;
files = (
96A71F251C72754D00C0C4AE /* Material.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
......@@ -36,7 +33,6 @@
9656CD271C6CFA6200EBCEF1 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
9656CD2A1C6CFA6200EBCEF1 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
9656CD2C1C6CFA6200EBCEF1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
96A71F231C72754D00C0C4AE /* Material.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; name = Material.framework; path = "/Users/danieldahan/Library/Developer/Xcode/DerivedData/Material-hbpnflxhoouqxebjcyhbbhqyesjd/Build/Products/Debug-iphoneos/Material.framework"; sourceTree = "<absolute>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
......@@ -44,7 +40,6 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
96A71F241C72754D00C0C4AE /* Material.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -54,7 +49,6 @@
9656CD141C6CFA6200EBCEF1 = {
isa = PBXGroup;
children = (
96A71F231C72754D00C0C4AE /* Material.framework */,
9656CD1F1C6CFA6200EBCEF1 /* Grid */,
9656CD1E1C6CFA6200EBCEF1 /* Products */,
);
......
......@@ -13,12 +13,12 @@
9642FA251C1B50E700022BC6 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9642FA231C1B50E700022BC6 /* LaunchScreen.storyboard */; };
9642FA331C1B909700022BC6 /* LeftViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9642FA321C1B909700022BC6 /* LeftViewController.swift */; };
967585381C569AA9001E4268 /* RightViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 967585371C569AA9001E4268 /* RightViewController.swift */; };
96A71F1E1C71960900C0C4AE /* Material.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 96A71F1D1C71960900C0C4AE /* Material.framework */; };
96A71F1F1C71960900C0C4AE /* Material.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 96A71F1D1C71960900C0C4AE /* Material.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
96A71F271C7275F200C0C4AE /* FeedCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96A71F261C7275F200C0C4AE /* FeedCollectionView.swift */; };
96A71F291C72761700C0C4AE /* FeedCollectionViewLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96A71F281C72761700C0C4AE /* FeedCollectionViewLayout.swift */; };
96A71F2B1C72766700C0C4AE /* FeedCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96A71F2A1C72766700C0C4AE /* FeedCollectionViewCell.swift */; };
96A71F321C73607B00C0C4AE /* FeedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96A71F311C73607B00C0C4AE /* FeedViewController.swift */; };
96A71F3C1C739D1E00C0C4AE /* Material.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 96A71F3B1C739D1E00C0C4AE /* Material.framework */; };
96A71F3D1C739D1E00C0C4AE /* Material.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 96A71F3B1C739D1E00C0C4AE /* Material.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
......@@ -28,7 +28,7 @@
dstPath = "";
dstSubfolderSpec = 10;
files = (
96A71F1F1C71960900C0C4AE /* Material.framework in Embed Frameworks */,
96A71F3D1C739D1E00C0C4AE /* Material.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
......@@ -44,11 +44,11 @@
9642FA261C1B50E700022BC6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
9642FA321C1B909700022BC6 /* LeftViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LeftViewController.swift; sourceTree = "<group>"; };
967585371C569AA9001E4268 /* RightViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RightViewController.swift; sourceTree = "<group>"; };
96A71F1D1C71960900C0C4AE /* Material.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; name = Material.framework; path = "/Users/danieldahan/Library/Developer/Xcode/DerivedData/Material-hbpnflxhoouqxebjcyhbbhqyesjd/Build/Products/Debug-iphoneos/Material.framework"; sourceTree = "<absolute>"; };
96A71F261C7275F200C0C4AE /* FeedCollectionView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedCollectionView.swift; sourceTree = "<group>"; };
96A71F281C72761700C0C4AE /* FeedCollectionViewLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedCollectionViewLayout.swift; sourceTree = "<group>"; };
96A71F2A1C72766700C0C4AE /* FeedCollectionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedCollectionViewCell.swift; sourceTree = "<group>"; };
96A71F311C73607B00C0C4AE /* FeedViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedViewController.swift; sourceTree = "<group>"; };
96A71F3B1C739D1E00C0C4AE /* Material.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; name = Material.framework; path = "/Users/danieldahan/Library/Developer/Xcode/DerivedData/Material-hbpnflxhoouqxebjcyhbbhqyesjd/Build/Products/Debug-iphoneos/Material.framework"; sourceTree = "<absolute>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
......@@ -56,7 +56,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
96A71F1E1C71960900C0C4AE /* Material.framework in Frameworks */,
96A71F3C1C739D1E00C0C4AE /* Material.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -66,7 +66,7 @@
9642FA0E1C1B50E700022BC6 = {
isa = PBXGroup;
children = (
96A71F1D1C71960900C0C4AE /* Material.framework */,
96A71F3B1C739D1E00C0C4AE /* Material.framework */,
9642FA191C1B50E700022BC6 /* SideNavigationViewController */,
9642FA181C1B50E700022BC6 /* Products */,
);
......
......@@ -97,7 +97,7 @@ class AppViewController: NavigationViewController {
sideNavigationViewController?.enabled = true
// Position the menuBackdropLayer for the animation when closing.
menuBackdropLayer.addAnimation(MaterialAnimation.scale(1, duration: 0.25), forKey: nil)
menuBackdropLayer.animate(MaterialAnimation.scale(1, duration: 0.25))
menuView.menu.close()
image = UIImage(named: "ic_add_white")
......@@ -110,7 +110,7 @@ class AppViewController: NavigationViewController {
self.menuBackdropLayer.frame = self.menuView.frame
self.menuBackdropLayer.shape = .Circle
}
menuBackdropLayer.addAnimation(MaterialAnimation.scale(30, duration: 0.25), forKey: nil)
menuBackdropLayer.animate(MaterialAnimation.scale(30, duration: 0.25))
menuBackdropLayer.hidden = false
menuView.menu.open() { (v: UIView) in
......@@ -135,7 +135,7 @@ class AppViewController: NavigationViewController {
private func prepareNavigationBarView() {
// Title label.
let titleLabel: UILabel = UILabel()
titleLabel.text = "Rcipes"
titleLabel.text = "Recipes"
titleLabel.textAlignment = .Left
titleLabel.textColor = MaterialColor.white
titleLabel.font = RobotoFont.regularWithSize(20)
......
......@@ -53,6 +53,6 @@ class FeedCollectionView : UICollectionView {
internal func prepareView() {
registerClass(FeedCollectionViewCell.self, forCellWithReuseIdentifier: "FeedCollectionViewCell")
backgroundColor = MaterialColor.clear
contentInset = UIEdgeInsetsMake(4, 0, 4, 0)
contentInset = UIEdgeInsetsMake(4, 0, 0, 0)
}
}
......@@ -52,7 +52,7 @@ class FeedCollectionViewCell : UICollectionViewCell {
}
private func prepareView() {
cardView = MaterialPulseView(frame: CGRectMake(4, 0, bounds.width - 8, 156))
cardView = MaterialPulseView()
cardView.pulseScale = false
cardView.pulseColor = MaterialColor.blue.lighten4
addSubview(cardView)
......@@ -86,37 +86,46 @@ class FeedCollectionViewCell : UICollectionViewCell {
detailLabel.backgroundColor = MaterialColor.clear
contentView.addSubview(detailLabel)
let g: Int = Int(bounds.width / 48)
grid.axis.columns = g
grid.views = [cardView]
imageView.grid.columns = 4
contentView.grid.columns = 8
contentView.grid.columns = g - 4
cardView.grid.contentInset.right = 8
cardView.grid.axis.columns = g
cardView.grid.views = [
imageView,
contentView
]
titleLabel.grid.rows = 4
titleLabel.grid.columns = 7
titleLabel.grid.offset.columns = 1
moreButton.grid.rows = 4
moreButton.grid.columns = 2
moreButton.grid.offset.columns = 8
detailLabel.grid.rows = 7
detailLabel.grid.offset.rows = 4
detailLabel.grid.columns = 7
detailLabel.grid.offset.columns = 1
contentView.grid.spacing = 8
contentView.grid.axis.columns = 10
contentView.grid.axis.direction = .None
contentView.grid.axis.inherited = false
contentView.grid.contentInsetPreset = .Square2
titleLabel.grid.columns = contentView.grid.columns
// titleLabel.grid.offset.columns = 1
//
// moreButton.grid.rows = 4
// moreButton.grid.columns = 2
// moreButton.grid.offset.columns = 8
//
// detailLabel.grid.rows = 7
// detailLabel.grid.offset.rows = 4
// detailLabel.grid.columns = 7
// detailLabel.grid.offset.columns = 1
//
// contentView.grid.spacing = 8
// contentView.grid.axis.columns = 10
// contentView.grid.axis.direction = .None
// contentView.grid.axis.inherited = false
// contentView.grid.contentInsetPreset = .Square2
contentView.grid.views = [
titleLabel,
moreButton,
detailLabel
// moreButton,
// detailLabel
]
}
}
......@@ -33,8 +33,8 @@ import UIKit
class FeedCollectionViewLayout : UICollectionViewLayout {
private var contentSize: CGSize = CGSizeZero
private var layoutItems: Array<(UICollectionViewLayoutAttributes, NSIndexPath)>?
internal var height: CGFloat = 160
internal var offset: CGFloat = 1
internal var height: CGFloat = 128
internal var offset: CGFloat = 4
override func layoutAttributesForItemAtIndexPath(indexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? {
let attributes: UICollectionViewLayoutAttributes = UICollectionViewLayoutAttributes(forCellWithIndexPath: indexPath)
......
......@@ -58,6 +58,11 @@ class FeedViewController: UIViewController {
prepareCollectionView()
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
collectionView.reloadData()
}
/// Prepares view.
private func prepareView() {
view.backgroundColor = MaterialColor.white
......@@ -113,9 +118,9 @@ class FeedViewController: UIViewController {
collectionView.delegate = self
collectionView.dataSource = self
collectionView.backgroundColor = MaterialColor.grey.lighten4
collectionView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(collectionView)
collectionView.translatesAutoresizingMaskIntoConstraints = false
MaterialLayout.alignToParent(view, child: collectionView)
}
}
......@@ -129,6 +134,7 @@ extension FeedViewController: UICollectionViewDelegate {
c.titleLabel.text = item.title
c.detailLabel.text = item.detail
c.imageView.image = item.image
c.grid.reloadLayout()
return c
}
......
......@@ -31,6 +31,9 @@
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
......
......@@ -11,8 +11,6 @@
966F57A31C226BAA009185B7 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 966F57A21C226BAA009185B7 /* ViewController.swift */; };
966F57A81C226BAA009185B7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 966F57A71C226BAA009185B7 /* Assets.xcassets */; };
966F57AB1C226BAA009185B7 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 966F57A91C226BAA009185B7 /* LaunchScreen.storyboard */; };
96A71F2D1C72B64900C0C4AE /* Material.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 96A71F2C1C72B64900C0C4AE /* Material.framework */; };
96A71F2E1C72B64900C0C4AE /* Material.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 96A71F2C1C72B64900C0C4AE /* Material.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
......@@ -22,7 +20,6 @@
dstPath = "";
dstSubfolderSpec = 10;
files = (
96A71F2E1C72B64900C0C4AE /* Material.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
......@@ -36,7 +33,6 @@
966F57A71C226BAA009185B7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
966F57AA1C226BAA009185B7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
966F57AC1C226BAA009185B7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
96A71F2C1C72B64900C0C4AE /* Material.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; name = Material.framework; path = "/Users/danieldahan/Library/Developer/Xcode/DerivedData/Material-hbpnflxhoouqxebjcyhbbhqyesjd/Build/Products/Debug-iphoneos/Material.framework"; sourceTree = "<absolute>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
......@@ -44,7 +40,6 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
96A71F2D1C72B64900C0C4AE /* Material.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -54,7 +49,6 @@
966F57941C226BAA009185B7 = {
isa = PBXGroup;
children = (
96A71F2C1C72B64900C0C4AE /* Material.framework */,
966F579F1C226BAA009185B7 /* TextField */,
966F579E1C226BAA009185B7 /* Products */,
);
......
......@@ -42,6 +42,8 @@
96A71EC71C6FFF0500C0C4AE /* MaterialSwitch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96A71EC61C6FFF0500C0C4AE /* MaterialSwitch.swift */; };
96A71EF61C71127100C0C4AE /* SearchBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96A71EF51C71127100C0C4AE /* SearchBarView.swift */; };
96A71F301C72E41100C0C4AE /* NavigationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96A71F2F1C72E41100C0C4AE /* NavigationViewController.swift */; };
96A71F351C7395C200C0C4AE /* MaterialCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96A71F341C7395C200C0C4AE /* MaterialCollectionViewCell.swift */; };
96A71F371C73967E00C0C4AE /* MaterialPulseCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96A71F361C73967E00C0C4AE /* MaterialPulseCollectionViewCell.swift */; };
96D88C1E1C1328D800B91418 /* CaptureView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96D88BF51C1328D800B91418 /* CaptureView.swift */; };
96D88C1F1C1328D800B91418 /* CardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96D88BF61C1328D800B91418 /* CardView.swift */; };
96D88C201C1328D800B91418 /* CapturePreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96D88BF71C1328D800B91418 /* CapturePreviewView.swift */; };
......@@ -143,6 +145,8 @@
96A71EC61C6FFF0500C0C4AE /* MaterialSwitch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MaterialSwitch.swift; sourceTree = "<group>"; };
96A71EF51C71127100C0C4AE /* SearchBarView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchBarView.swift; sourceTree = "<group>"; };
96A71F2F1C72E41100C0C4AE /* NavigationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NavigationViewController.swift; sourceTree = "<group>"; };
96A71F341C7395C200C0C4AE /* MaterialCollectionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MaterialCollectionViewCell.swift; sourceTree = "<group>"; };
96A71F361C73967E00C0C4AE /* MaterialPulseCollectionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MaterialPulseCollectionViewCell.swift; sourceTree = "<group>"; };
96D88BF51C1328D800B91418 /* CaptureView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CaptureView.swift; sourceTree = "<group>"; };
96D88BF61C1328D800B91418 /* CardView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CardView.swift; sourceTree = "<group>"; };
96D88BF71C1328D800B91418 /* CapturePreviewView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CapturePreviewView.swift; sourceTree = "<group>"; };
......@@ -281,6 +285,15 @@
name = Search;
sourceTree = "<group>";
};
96A71F331C73959100C0C4AE /* CollectionView */ = {
isa = PBXGroup;
children = (
96A71F361C73967E00C0C4AE /* MaterialPulseCollectionViewCell.swift */,
96A71F341C7395C200C0C4AE /* MaterialCollectionViewCell.swift */,
);
name = CollectionView;
sourceTree = "<group>";
};
96D88BF41C1328D800B91418 /* Sources */ = {
isa = PBXGroup;
children = (
......@@ -302,6 +315,7 @@
96D88C471C1328F500B91418 /* Font */,
966F57B61C226D65009185B7 /* Text */,
96442ADC1C28EF1400C3C574 /* TableView */,
96A71F331C73959100C0C4AE /* CollectionView */,
965C58BD1C6B8D3300CFB4E1 /* Grid */,
96A71E921C6FBC2900C0C4AE /* Menu */,
96A71EC51C6FFEF300C0C4AE /* Switch */,
......@@ -624,6 +638,7 @@
96D88C2B1C1328D800B91418 /* MaterialButton.swift in Sources */,
96D88C311C1328D800B91418 /* MaterialKeyframeAnimation.swift in Sources */,
96D88C2E1C1328D800B91418 /* MaterialFont.swift in Sources */,
96A71F371C73967E00C0C4AE /* MaterialPulseCollectionViewCell.swift in Sources */,
9656CD0C1C6BD33700EBCEF1 /* Grid.swift in Sources */,
960B23461C38480E00E96216 /* Text.swift in Sources */,
96D88C351C1328D800B91418 /* MaterialLayout.swift in Sources */,
......@@ -661,6 +676,7 @@
96D88C381C1328D800B91418 /* MaterialShape.swift in Sources */,
960B23331C383EAA00E96216 /* Material+UIImage+Size.swift in Sources */,
96A71E911C6FBC2200C0C4AE /* MenuView.swift in Sources */,
96A71F351C7395C200C0C4AE /* MaterialCollectionViewCell.swift in Sources */,
96D88C271C1328D800B91418 /* Material+UIFont.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
......
///*
//* Copyright (C) 2015 - 2016, Daniel Dahan and CosmicMind, Inc. <http://cosmicmind.io>.
//* All rights reserved.
//*
//* Redistribution and use in source and binary forms, with or without
//* modification, are permitted provided that the following conditions are met:
//*
//* * Redistributions of source code must retain the above copyright notice, this
//* list of conditions and the following disclaimer.
//*
//* * Redistributions in binary form must reproduce the above copyright notice,
//* this list of conditions and the following disclaimer in the documentation
//* and/or other materials provided with the distribution.
//*
//* * Neither the name of Material nor the names of its
//* contributors may be used to endorse or promote products derived from
//* this software without specific prior written permission.
//*
//* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
//* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
//* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
//* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
//* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
//* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
//* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
//* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
//* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
//* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//*/
//
//import UIKit
//
//@objc(floatingViewControllerCollectionViewCellDelegate)
//public protocol MaterialCollectionViewCellDelegate : MaterialDelegate {
// optional func collectionViewCellWillPassThresholdForLeftLayer(cell: MaterialCollectionViewCell)
// optional func collectionViewCellWillPassThresholdForRightLayer(cell: MaterialCollectionViewCell)
// optional func collectionViewCellDidRevealLeftLayer(cell: MaterialCollectionViewCell)
// optional func collectionViewCellDidRevealRightLayer(cell: MaterialCollectionViewCell)
// optional func collectionViewCellDidCloseLeftLayer(cell: MaterialCollectionViewCell)
// optional func collectionViewCellDidCloseRightLayer(cell: MaterialCollectionViewCell)
//}
//
//@objc(MaterialCollectionViewCell)
//public class MaterialCollectionViewCell : MaterialPulseCollectionViewCell, UIGestureRecognizerDelegate {
// //
// // :name: panRecognizer
// //
// private var panRecognizer: UIPanGestureRecognizer!
//
// //
// // :name: originalPosition
// //
// private var originalPosition: CGPoint!
//
// //
// // :name: leftOnDragRelease
// //
// private lazy var leftOnDragRelease: Bool = false
//
// //
// // :name: rightOnDragRelease
// //
// private lazy var rightOnDragRelease: Bool = false
//
// /**
// :name: leftView
// */
// public private(set) lazy var leftView: MaterialView = MaterialView()
//
// /**
// :name: rightView
// */
// public private(set) lazy var rightView: MaterialView = MaterialView()
//
// /**
// :name: revealed
// */
// public private(set) lazy var revealed: Bool = false
//
// /**
// :name: closeAutomatically
// */
// public lazy var closeAutomatically: Bool = true
//
// /**
// :name: gestureRecognizerShouldBegin
// */
// public override func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
// if let panGestureRecognizer = gestureRecognizer as? UIPanGestureRecognizer {
// let translation = panGestureRecognizer.translationInView(superview!)
// return fabs(translation.x) > fabs(translation.y)
// }
// return false
// }
//
// /**
// :name: prepareView
// */
// public override func prepareView() {
// super.prepareView()
//
// userInteractionEnabled = MaterialTheme.pulseCollectionView.userInteractionEnabled
// backgroundColor = MaterialTheme.pulseCollectionView.backgroundColor
// pulseColorOpacity = MaterialTheme.pulseCollectionView.pulseColorOpacity
// pulseColor = MaterialTheme.pulseCollectionView.pulseColor
//
// depth = MaterialTheme.pulseCollectionView.depth
// shadowColor = MaterialTheme.pulseCollectionView.shadowColor
// zPosition = MaterialTheme.pulseCollectionView.zPosition
// borderWidth = MaterialTheme.pulseCollectionView.borderWidth
// borderColor = MaterialTheme.pulseCollectionView.bordercolor
// masksToBounds = true
//
// prepareLeftView()
// prepareRightView()
// preparePanGesture()
// }
//
// /**
// :name: animationDidStop
// */
// public override func animationDidStop(anim: CAAnimation, finished flag: Bool) {
// super.animationDidStop(anim, finished: flag)
//
// if let a: CABasicAnimation = anim as? CABasicAnimation {
// if "position" == a.keyPath {
// masksToBounds = true
// if leftOnDragRelease {
// (delegate as? MaterialCollectionViewCellDelegate)?.collectionViewCellDidCloseLeftLayer?(self)
// } else if rightOnDragRelease {
// (delegate as? MaterialCollectionViewCellDelegate)?.collectionViewCellDidCloseRightLayer?(self)
// }
// }
// }
// }
//
// /**
// :name: open
// */
// public func open() {
// animate(MaterialAnimation.position(CGPointMake(width * 1.5, y + height / 2), duration: 0.25))
// }
//
// /**
// :name: close
// */
// public func close() {
// animate(MaterialAnimation.position(CGPointMake(width / 2, y + height / 2), duration: 0.25))
// }
//
// //
// // :name: prepareLeftView
// //
// internal func prepareLeftView() {
// leftView.frame = CGRectMake(-width, 0, width, height)
// addSubview(leftView)
// }
//
// //
// // :name: prepareRightView
// //
// internal func prepareRightView() {
// rightView.frame = CGRectMake(width, 0, width, height)
// addSubview(rightView)
// }
//
// //
// // :name: preparePanGesture
// //
// internal func preparePanGesture() {
// panRecognizer = UIPanGestureRecognizer(target: self, action: "handlePanGesture:")
// panRecognizer.delegate = self
// addGestureRecognizer(panRecognizer)
// }
//
// //
// // :name: handlePanGesture
// //
// internal func handlePanGesture(recognizer: UIPanGestureRecognizer) {
// switch recognizer.state {
// case .Began:
// originalPosition = position
// masksToBounds = false
// leftOnDragRelease = x > width / 2
// rightOnDragRelease = x < -width / 2
//
// case .Changed:
// let translation = recognizer.translationInView(self)
// MaterialAnimation.animationDisabled {
// self.position.x = self.originalPosition.x + translation.x
// }
//
// leftOnDragRelease = x > width / 2
// rightOnDragRelease = x < -width / 2
//
// if !revealed && (leftOnDragRelease || rightOnDragRelease) {
// revealed = true
// if leftOnDragRelease {
// (delegate as? MaterialCollectionViewCellDelegate)?.collectionViewCellWillPassThresholdForLeftLayer?(self)
// } else if rightOnDragRelease {
// (delegate as? MaterialCollectionViewCellDelegate)?.collectionViewCellWillPassThresholdForRightLayer?(self)
// }
// }
// case .Ended:
// revealed = false
//
// if leftOnDragRelease {
// (delegate as? MaterialCollectionViewCellDelegate)?.collectionViewCellDidRevealLeftLayer?(self)
// } else if rightOnDragRelease {
// (delegate as? MaterialCollectionViewCellDelegate)?.collectionViewCellDidRevealRightLayer?(self)
// }
//
// if !leftOnDragRelease && !rightOnDragRelease {
// close()
// } else if closeAutomatically && (leftOnDragRelease || rightOnDragRelease) {
// close()
// }
// default:break
// }
// }
//}
\ No newline at end of file
......@@ -251,7 +251,7 @@ public class MaterialLayer : CAShapeLayer {
public func animate(animation: CAAnimation) {
animation.delegate = self
if let a: CABasicAnimation = animation as? CABasicAnimation {
a.fromValue = valueForKeyPath(a.keyPath!)
a.fromValue = (nil == presentationLayer() ? self : presentationLayer() as! CALayer).valueForKeyPath(a.keyPath!)
}
if let a: CAPropertyAnimation = animation as? CAPropertyAnimation {
addAnimation(a, forKey: a.keyPath!)
......@@ -287,7 +287,7 @@ public class MaterialLayer : CAShapeLayer {
}
}
(delegate as? MaterialAnimationDelegate)?.materialAnimationDidStop?(anim, finished: flag)
removeAnimationForKey(a.keyPath!)
// removeAnimationForKey(a.keyPath!)
} else if let a: CAAnimationGroup = anim as? CAAnimationGroup {
for x in a.animations! {
animationDidStop(x, finished: true)
......
////
//// Copyright (C) 2015 CosmicMind, Inc. <http://cosmicmind.io> and other CosmicMind contributors
////
//// This program is free software: you can redistribute it and/or modify
//// it under the terms of the GNU Affero General Public License as published
//// by the Free Software Foundation, either version 3 of the License, or
//// (at your option) any later version.
////
//// This program is distributed in the hope that it will be useful,
//// but WITHOUT ANY WARRANTY; without even the implied warranty of
//// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//// GNU Affero General Public License for more details.
////
//// You should have received a copy of the GNU Affero General Public License
//// along with this program located at the root of the software package
//// in a file called LICENSE. If not, see <http://www.gnu.org/licenses/>.
////
//
//import UIKit
//
//public class MaterialPulseCollectionViewCell : UICollectionViewCell {
// /**
// :name: visualLayer
// */
// public private(set) lazy var visualLayer: CAShapeLayer = CAShapeLayer()
//
// /**
// :name: pulseLayer
// */
// public private(set) lazy var pulseLayer: CAShapeLayer = CAShapeLayer()
//
// /**
// :name: delegate
// */
// public weak var delegate: MaterialDelegate?
//
// /**
// :name: pulseScale
// */
// public lazy var pulseScale: Bool = true
//
// /**
// :name: pulseColorOpacity
// */
// public var pulseColorOpacity: CGFloat = 0.25 {
// didSet {
// updatePulseLayer()
// }
// }
//
// /**
// :name: pulseColor
// */
// public var pulseColor: UIColor? {
// didSet {
// updatePulseLayer()
// }
// }
//
// /**
// :name: image
// */
// public var image: UIImage? {
// didSet {
// visualLayer.contents = image?.CGImage
// }
// }
//
// /**
// :name: contentsRect
// */
// public var contentsRect: CGRect {
// didSet {
// visualLayer.contentsRect = contentsRect
// }
// }
//
// /**
// :name: contentsCenter
// */
// public var contentsCenter: CGRect {
// didSet {
// visualLayer.contentsCenter = contentsCenter
// }
// }
//
// /**
// :name: contentsScale
// */
// public var contentsScale: CGFloat {
// didSet {
// visualLayer.contentsScale = contentsScale
// }
// }
//
// /**
// :name: contentsGravity
// */
// public var contentsGravity: MaterialGravity {
// didSet {
// visualLayer.contentsGravity = MaterialGravityToString(contentsGravity)
// }
// }
//
// /**
// :name: masksToBounds
// */
// public var masksToBounds: Bool {
// get {
// return layer.masksToBounds
// }
// set(value) {
// layer.masksToBounds = value
// }
// }
//
// /**
// :name: backgroundColor
// */
// public override var backgroundColor: UIColor? {
// didSet {
// layer.backgroundColor = backgroundColor?.CGColor
// }
// }
//
// /**
// :name: x
// */
// public var x: CGFloat {
// get {
// return layer.frame.origin.x
// }
// set(value) {
// layer.frame.origin.x = value
// }
// }
//
// /**
// :name: y
// */
// public var y: CGFloat {
// get {
// return layer.frame.origin.y
// }
// set(value) {
// layer.frame.origin.y = value
// }
// }
//
// /**
// :name: width
// */
// public var width: CGFloat {
// get {
// return layer.frame.size.width
// }
// set(value) {
// layer.frame.size.width = value
// if .None != shape {
// layer.frame.size.height = value
// }
// }
// }
//
// /**
// :name: height
// */
// public var height: CGFloat {
// get {
// return layer.frame.size.height
// }
// set(value) {
// layer.frame.size.height = value
// if .None != shape {
// layer.frame.size.width = value
// }
// }
// }
//
// /**
// :name: shadowColor
// */
// public var shadowColor: UIColor? {
// didSet {
// layer.shadowColor = shadowColor?.CGColor
// }
// }
//
// /**
// :name: shadowOffset
// */
// public var shadowOffset: CGSize {
// get {
// return layer.shadowOffset
// }
// set(value) {
// layer.shadowOffset = value
// }
// }
//
// /**
// :name: shadowOpacity
// */
// public var shadowOpacity: Float {
// get {
// return layer.shadowOpacity
// }
// set(value) {
// layer.shadowOpacity = value
// }
// }
//
// /**
// :name: shadowRadius
// */
// public var shadowRadius: CGFloat {
// get {
// return layer.shadowRadius
// }
// set(value) {
// layer.shadowRadius = value
// }
// }
//
// /**
// :name: depth
// */
// public var depth: MaterialDepth {
// didSet {
// let value: MaterialDepthType = MaterialDepthToValue(depth)
// shadowOffset = value.offset
// shadowOpacity = value.opacity
// shadowRadius = value.radius
// }
// }
//
// /**
// :name: cornerRadius
// */
// public var cornerRadius: MaterialRadius? {
// didSet {
// if let v: MaterialRadius = cornerRadius {
// layer.cornerRadius = MaterialRadiusToValue(v)
// if .Circle == shape {
// shape = .None
// }
// }
// }
// }
//
// /**
// :name: shape
// */
// public var shape: MaterialShape {
// didSet {
// if .None != shape {
// if width < height {
// frame.size.width = height
// } else {
// frame.size.height = width
// }
// }
// }
// }
//
// /**
// :name: borderWidth
// */
// public var borderWidth: MaterialBorder {
// didSet {
// layer.borderWidth = MaterialBorderToValue(borderWidth)
// }
// }
//
// /**
// :name: borderColor
// */
// public var borderColor: UIColor? {
// didSet {
// layer.borderColor = borderColor?.CGColor
// }
// }
//
// /**
// :name: position
// */
// public var position: CGPoint {
// get {
// return layer.position
// }
// set(value) {
// layer.position = value
// }
// }
//
// /**
// :name: zPosition
// */
// public var zPosition: CGFloat {
// get {
// return layer.zPosition
// }
// set(value) {
// layer.zPosition = value
// }
// }
//
// /**
// :name: init
// */
// public required init?(coder aDecoder: NSCoder) {
// contentsRect = MaterialTheme.pulseCollectionView.contentsRect
// contentsCenter = MaterialTheme.pulseCollectionView.contentsCenter
// contentsScale = MaterialTheme.pulseCollectionView.contentsScale
// contentsGravity = MaterialTheme.pulseCollectionView.contentsGravity
// borderWidth = MaterialTheme.pulseCollectionView.borderWidth
// depth = MaterialTheme.pulseCollectionView.depth
// shape = .None
// cornerRadius = .None
// super.init(coder: aDecoder)
// prepareView()
// }
//
// /**
// :name: init
// */
// public override init(frame: CGRect) {
// contentsRect = MaterialTheme.pulseCollectionView.contentsRect
// contentsCenter = MaterialTheme.pulseCollectionView.contentsCenter
// contentsScale = MaterialTheme.pulseCollectionView.contentsScale
// contentsGravity = MaterialTheme.pulseCollectionView.contentsGravity
// borderWidth = MaterialTheme.pulseCollectionView.borderWidth
// depth = MaterialTheme.pulseCollectionView.depth
// shape = .None
// cornerRadius = .None
// super.init(frame: frame)
// prepareView()
// }
//
// /**
// :name: init
// */
// public convenience init() {
// self.init(frame: CGRectNull)
// }
//
// /**
// :name: layoutSublayersOfLayer
// */
// public override func layoutSublayersOfLayer(layer: CALayer) {
// super.layoutSublayersOfLayer(layer)
// if self.layer == layer {
// layoutShape()
// layoutVisualLayer()
// }
// }
//
// /**
// :name: animation
// */
// public func animate(animation: CAAnimation) {
// animation.delegate = self
// if let a: CABasicAnimation = animation as? CABasicAnimation {
// a.fromValue = (nil == layer.presentationLayer() ? layer : layer.presentationLayer() as! CALayer).valueForKeyPath(a.keyPath!)
// }
// if let a: CAPropertyAnimation = animation as? CAPropertyAnimation {
// layer.addAnimation(a, forKey: a.keyPath!)
// } else if let a: CAAnimationGroup = animation as? CAAnimationGroup {
// layer.addAnimation(a, forKey: nil)
// } else if let a: CATransition = animation as? CATransition {
// layer.addAnimation(a, forKey: kCATransition)
// }
// }
//
// /**
// :name: animationDidStart
// */
// public override func animationDidStart(anim: CAAnimation) {
// (delegate as? MaterialAnimationDelegate)?.materialAnimationDidStart?(anim)
// }
//
// /**
// :name: animationDidStop
// */
// public override func animationDidStop(anim: CAAnimation, finished flag: Bool) {
// if let a: CAPropertyAnimation = anim as? CAPropertyAnimation {
// if let b: CABasicAnimation = a as? CABasicAnimation {
// MaterialAnimation.animationDisabled {
// self.layer.setValue(nil == b.toValue ? b.byValue : b.toValue, forKey: b.keyPath!)
// }
// }
// (delegate as? MaterialAnimationDelegate)?.materialAnimationDidStop?(anim, finished: flag)
// layer.removeAnimationForKey(a.keyPath!)
// } else if let a: CAAnimationGroup = anim as? CAAnimationGroup {
// for x in a.animations! {
// animationDidStop(x, finished: true)
// }
// }
// }
//
// /**
// :name: touchesBegan
// */
// public override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
// super.touchesBegan(touches, withEvent: event)
// let point: CGPoint = layer.convertPoint(touches.first!.locationInView(self), fromLayer: layer)
// if true == layer.containsPoint(point) {
// let w: CGFloat = width
// let h: CGFloat = height
// let s: CGFloat = 1.05
// let t: CFTimeInterval = 0
//
// if nil != pulseColor && 0 < pulseColorOpacity {
// MaterialAnimation.animationDisabled {
// self.pulseLayer.bounds = CGRectMake(0, 0, 2 * w, 2 * h)
// }
// MaterialAnimation.animateWithDuration(t, animations: {
// self.pulseLayer.hidden = false
// })
// }
//
// if pulseScale {
// layer.addAnimation(MaterialAnimation.scale(s, duration: t), forKey: nil)
// }
// }
// }
//
// /**
// :name: touchesEnded
// */
// public override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
// super.touchesEnded(touches, withEvent: event)
// shrink()
// }
//
// /**
// :name: touchesCancelled
// */
// public override func touchesCancelled(touches: Set<UITouch>?, withEvent event: UIEvent?) {
// super.touchesCancelled(touches, withEvent: event)
// shrink()
// }
//
// /**
// :name: prepareView
// */
// public func prepareView() {
// prepareVisualLayer()
// preparePulseLayer()
// }
//
// //
// // :name: prepareVisualLayer
// //
// internal func prepareVisualLayer() {
// visualLayer.zPosition = -1
// visualLayer.masksToBounds = true
// layer.addSublayer(visualLayer)
// }
//
// //
// // :name: layoutVisualLayer
// //
// internal func layoutVisualLayer() {
// visualLayer.bounds = bounds
// visualLayer.position = CGPointMake(width / 2, height / 2)
// visualLayer.cornerRadius = layer.cornerRadius
// }
//
// //
// // :name: layoutShape
// //
// internal func layoutShape() {
// if .Circle == shape {
// layer.cornerRadius = width / 2
// }
// }
//
// //
// // :name: preparePulseLayer
// //
// internal func preparePulseLayer() {
// pulseLayer.hidden = true
// pulseLayer.zPosition = 1
// visualLayer.addSublayer(pulseLayer)
// }
//
// //
// // :name: updatePulseLayer
// //
// internal func updatePulseLayer() {
// pulseLayer.backgroundColor = pulseColor?.colorWithAlphaComponent(pulseColorOpacity).CGColor
// }
//
// //
// // :name: shrink
// //
// internal func shrink() {
// let t: CFTimeInterval = 0.25
// let s: CGFloat = 1
//
// if nil != pulseColor && 0 < pulseColorOpacity {
// MaterialAnimation.animateWithDuration(t, animations: {
// self.pulseLayer.hidden = true
// })
// pulseLayer.addAnimation(MaterialAnimation.scale(s, duration: t), forKey: nil)
// }
//
// if pulseScale {
// layer.addAnimation(MaterialAnimation.scale(s, duration: t), forKey: nil)
// }
// }
//}
\ No newline at end of file
......@@ -152,7 +152,7 @@ public class MaterialSwitch: UIControl {
public var trackOffDisabledColor: UIColor = MaterialColor.clear
/// Track view reference.
public private(set) var track: MaterialView {
public private(set) var trackLayer: MaterialLayer {
didSet {
prepareTrack()
}
......@@ -231,7 +231,7 @@ public class MaterialSwitch: UIControl {
- Parameter aDecoder: A NSCoder instance.
*/
public required init?(coder aDecoder: NSCoder) {
track = MaterialView(frame: CGRectZero)
trackLayer = MaterialLayer(frame: CGRectZero)
button = FabButton(frame: CGRectZero)
super.init(coder: aDecoder)
prepareTrack()
......@@ -248,7 +248,7 @@ public class MaterialSwitch: UIControl {
- Parameter size: A MaterialSwitchSize value.
*/
public init(state: MaterialSwitchState = .Off, style: MaterialSwitchStyle = .Default, size: MaterialSwitchSize = .Default) {
track = MaterialView(frame: CGRectZero)
trackLayer = MaterialLayer(frame: CGRectZero)
button = FabButton(frame: CGRectZero)
super.init(frame: CGRectZero)
prepareTrack()
......@@ -368,9 +368,16 @@ public class MaterialSwitch: UIControl {
}
}
public override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
super.touchesEnded(touches, withEvent: event)
if true == CGRectContainsPoint(trackLayer.frame, layer.convertPoint(touches.first!.locationInView(self), fromLayer: layer)) {
setSwitchState(.On == switchState ? .Off : .On)
}
}
/// Prepares the track.
private func prepareTrack() {
addSubview(track)
layer.addSublayer(trackLayer)
}
/// Prepares the button.
......@@ -429,10 +436,10 @@ public class MaterialSwitch: UIControl {
private func updateColorForEnabledState(state: MaterialSwitchState) {
if .On == state {
button.backgroundColor = buttonOnColor
track.backgroundColor = trackOnColor
trackLayer.backgroundColor = trackOnColor.CGColor
} else {
button.backgroundColor = buttonOffColor
track.backgroundColor = trackOffColor
trackLayer.backgroundColor = trackOffColor.CGColor
}
}
......@@ -443,10 +450,10 @@ public class MaterialSwitch: UIControl {
private func updateColorForDisabledState(state: MaterialSwitchState) {
if .On == state {
button.backgroundColor = buttonOnDisabledColor
track.backgroundColor = trackOnDisabledColor
trackLayer.backgroundColor = trackOnDisabledColor.CGColor
} else {
button.backgroundColor = buttonOffDisabledColor
track.backgroundColor = trackOffDisabledColor
trackLayer.backgroundColor = trackOffDisabledColor.CGColor
}
}
......@@ -464,8 +471,8 @@ public class MaterialSwitch: UIControl {
let px: CGFloat = (width - w) / 2
track.frame = CGRectMake(px, (height - trackThickness) / 2, w, trackThickness)
track.cornerRadius = min(track.height, track.width) / 2
trackLayer.frame = CGRectMake(px, (height - trackThickness) / 2, w, trackThickness)
trackLayer.cornerRadius = min(trackLayer.height, trackLayer.width) / 2
button.frame = CGRectMake(px, (height - buttonDiameter) / 2, buttonDiameter, buttonDiameter)
onPosition = width - px - buttonDiameter
......
......@@ -30,6 +30,11 @@
import UIKit
@objc(NavigationBarViewDelegate)
public protocol NavigationBarViewDelegate : MaterialDelegate {
optional func navigationBarViewLayoutChanged(navigationBarView: NavigationBarView)
}
public class NavigationBarView : MaterialView {
/// TitleView that holds the titleLabel and detailLabel.
public private(set) lazy var titleView: MaterialView = MaterialView()
......@@ -145,6 +150,7 @@ public class NavigationBarView : MaterialView {
// Column adjustment.
width = UIScreen.mainScreen().bounds.width
grid.axis.columns = Int(width / 48)
(delegate as? NavigationBarViewDelegate)?.navigationBarViewLayoutChanged?(self)
reloadView()
}
......
......@@ -128,14 +128,13 @@ public class NavigationViewController: UIViewController {
/// Prepares the NavigationBarView.
private func prepareNavigationBarView() {
navigationBarView.delegate = self
view.addSubview(navigationBarView)
}
/// A method that prepares the mainViewController.
private func prepareMainViewController() {
prepareViewControllerWithinContainer(mainViewController, container: view)
mainViewController.view.frame = CGRectMake(0, navigationBarView.height, view.bounds.width, view.bounds.height - navigationBarView.height)
mainViewController.view.frame.origin.y = navigationBarView.height
}
/**
......@@ -156,6 +155,14 @@ public class NavigationViewController: UIViewController {
/// Layout subviews.
private func layoutSubviews() {
let size: CGSize = UIScreen.mainScreen().bounds.size
mainViewController.view.frame = CGRectMake(0, navigationBarView.height, size.width, size.height - navigationBarView.height)
}
}
extension NavigationViewController : NavigationBarViewDelegate {
/// Monitor layout changes.
public func navigationBarViewLayoutChanged(navigationBarView: NavigationBarView) {
layoutSubviews()
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment