Compare commits

...
8 Commits
Author SHA1 Message Date
Alex K 2285009361 small improvements 2018-10-23 09:24:41 +03:00
Alex K f6d649a79c update podspec 2018-10-16 09:16:56 +03:00
Alex K 2bc6905e3a make openAnimation and closeAnimation functions private 2018-10-09 09:23:41 +03:00
Alex K f279359721 update swift-version file 2018-10-01 11:29:22 +03:00
Alex K 859a868aa4 add unfold test 2018-09-24 10:01:20 +03:00
Alex K c9c516dc19 update podspec 2018-09-17 10:34:01 +03:00
Alex K 3335c26e78 converted to swift 4.2 2018-09-17 10:32:37 +03:00
Alex K 27d2bc7a62 update podspec 2018-09-17 10:30:41 +03:00
7 changed files with 41 additions and 24 deletions
+1 -1
View File
@@ -1 +1 @@
4.0
4.2
+1 -1
View File
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'FoldingCell'
s.version = '3.1.4'
s.version = '4.0.1'
s.summary = 'UITableViewCell with folding animation.'
s.homepage = 'https://github.com/Ramotion/folding-cell'
s.license = 'MIT'
@@ -28,7 +28,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplicationLaunchOptionsKey: Any]? = nil) -> Bool {
func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
return true
}
}
@@ -42,7 +42,7 @@ class MainTableViewController: UITableViewController {
private func setup() {
cellHeights = Array(repeating: Const.closeCellHeight, count: Const.rowsCount)
tableView.estimatedRowHeight = Const.closeCellHeight
tableView.rowHeight = UITableViewAutomaticDimension
tableView.rowHeight = UITableView.automaticDimension
tableView.backgroundColor = UIColor(patternImage: #imageLiteral(resourceName: "background"))
if #available(iOS 10.0, *) {
tableView.refreshControl = UIRefreshControl()
@@ -318,18 +318,19 @@
TargetAttributes = {
5A0E1C2C21414940006A0374 = {
CreatedOnToolsVersion = 9.4;
LastSwiftMigration = 1000;
ProvisioningStyle = Automatic;
TestTargetID = 9D57F31B1EDC7A6F0004599F;
};
8499D8841D0054A8004B5B37 = {
CreatedOnToolsVersion = 7.3.1;
DevelopmentTeam = LEAZS7L33U;
LastSwiftMigration = 0830;
LastSwiftMigration = 1000;
};
9D57F31B1EDC7A6F0004599F = {
CreatedOnToolsVersion = 8.3.2;
DevelopmentTeam = 34MUF9YXTA;
LastSwiftMigration = 0920;
LastSwiftMigration = 1000;
ProvisioningStyle = Automatic;
};
9DAA51531EDDBAD700DFC539 = {
@@ -508,7 +509,7 @@
PRODUCT_BUNDLE_IDENTIFIER = com.ramotion.FoldingCellDemoTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_VERSION = 4.0;
SWIFT_VERSION = 4.2;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FoldingCell-Demo.app/FoldingCell-Demo";
};
@@ -531,7 +532,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.ramotion.FoldingCellDemoTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 4.0;
SWIFT_VERSION = 4.2;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FoldingCell-Demo.app/FoldingCell-Demo";
};
@@ -660,7 +661,7 @@
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 4.0;
SWIFT_VERSION = 4.2;
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
@@ -687,7 +688,7 @@
PRODUCT_BUNDLE_IDENTIFIER = com.ramotion.FoldingCell;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_VERSION = 4.0;
SWIFT_VERSION = 4.2;
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
@@ -712,8 +713,7 @@
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
SWIFT_VERSION = 4.2;
};
name = Debug;
};
@@ -734,8 +734,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "ramotion.com.FoldingCell-Demo";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 4.0;
SWIFT_VERSION = 4.2;
};
name = Release;
};
+21 -9
View File
@@ -93,7 +93,7 @@ open class FoldingCell: UITableViewCell {
foregroundView.layer.transform = foregroundView.transform3d()
createAnimationView()
contentView.bringSubview(toFront: foregroundView)
contentView.bringSubviewToFront(foregroundView)
}
func createAnimationItemView() -> [RotatedView] {
@@ -121,10 +121,12 @@ open class FoldingCell: UITableViewCell {
if animationType == .open {
animationView?.subviews
.lazy
.compactMap { $0 as? RotatedView }
.forEach { $0.alpha = 0 }
} else {
animationView?.subviews
.lazy
.compactMap { $0 as? RotatedView }
.forEach {
if animationType == .open {
@@ -298,7 +300,7 @@ open class FoldingCell: UITableViewCell {
return durations
}
public func openAnimation(_ completion: (() -> Void)?) {
func openAnimation(_ completion: (() -> Void)?) {
isUnfolded = true
removeImageItemsFromAnimationView()
addImageItemsToAnimationView()
@@ -309,7 +311,7 @@ open class FoldingCell: UITableViewCell {
let durations = durationSequence(.open)
var delay: TimeInterval = 0
var timing = kCAMediaTimingFunctionEaseIn
var timing = convertFromCAMediaTimingFunctionName(CAMediaTimingFunctionName.easeIn)
var from: CGFloat = 0.0
var to: CGFloat = -CGFloat.pi / 2
var hidden = true
@@ -326,7 +328,7 @@ open class FoldingCell: UITableViewCell {
from = from == 0.0 ? CGFloat.pi / 2 : 0.0
to = to == 0.0 ? -CGFloat.pi / 2 : 0.0
timing = timing == kCAMediaTimingFunctionEaseIn ? kCAMediaTimingFunctionEaseOut : kCAMediaTimingFunctionEaseIn
timing = timing == convertFromCAMediaTimingFunctionName(CAMediaTimingFunctionName.easeIn) ? convertFromCAMediaTimingFunctionName(CAMediaTimingFunctionName.easeOut) : convertFromCAMediaTimingFunctionName(CAMediaTimingFunctionName.easeIn)
hidden = !hidden
delay += durations[index]
}
@@ -345,7 +347,7 @@ open class FoldingCell: UITableViewCell {
}
}
public func closeAnimation(_ completion: (() -> Void)?) {
func closeAnimation(_ completion: (() -> Void)?) {
isUnfolded = false
removeImageItemsFromAnimationView()
addImageItemsToAnimationView()
@@ -360,7 +362,7 @@ open class FoldingCell: UITableViewCell {
var durations: [TimeInterval] = durationSequence(.close).reversed()
var delay: TimeInterval = 0
var timing = kCAMediaTimingFunctionEaseIn
var timing = convertFromCAMediaTimingFunctionName(CAMediaTimingFunctionName.easeIn)
var from: CGFloat = 0.0
var to: CGFloat = CGFloat.pi / 2
var hidden = true
@@ -376,7 +378,7 @@ open class FoldingCell: UITableViewCell {
to = to == 0.0 ? CGFloat.pi / 2 : 0.0
from = from == 0.0 ? -CGFloat.pi / 2 : 0.0
timing = timing == kCAMediaTimingFunctionEaseIn ? kCAMediaTimingFunctionEaseOut : kCAMediaTimingFunctionEaseIn
timing = timing == convertFromCAMediaTimingFunctionName(CAMediaTimingFunctionName.easeIn) ? convertFromCAMediaTimingFunctionName(CAMediaTimingFunctionName.easeOut) : convertFromCAMediaTimingFunctionName(CAMediaTimingFunctionName.easeIn)
hidden = !hidden
delay += durations[index]
}
@@ -454,12 +456,12 @@ extension RotatedView: CAAnimationDelegate {
func foldingAnimation(_ timing: String, from: CGFloat, to: CGFloat, duration: TimeInterval, delay: TimeInterval, hidden: Bool) {
let rotateAnimation = CABasicAnimation(keyPath: Const.transformRotationX)
rotateAnimation.timingFunction = CAMediaTimingFunction(name: timing)
rotateAnimation.timingFunction = CAMediaTimingFunction(name: convertToCAMediaTimingFunctionName(timing))
rotateAnimation.fromValue = from
rotateAnimation.toValue = to
rotateAnimation.duration = duration
rotateAnimation.delegate = self
rotateAnimation.fillMode = kCAFillModeForwards
rotateAnimation.fillMode = CAMediaTimingFillMode.forwards
rotateAnimation.isRemovedOnCompletion = false
rotateAnimation.beginTime = CACurrentMediaTime() + delay
@@ -499,3 +501,13 @@ private extension UIView {
return image
}
}
// Helper function inserted by Swift 4.2 migrator.
fileprivate func convertFromCAMediaTimingFunctionName(_ input: CAMediaTimingFunctionName) -> String {
return input.rawValue
}
// Helper function inserted by Swift 4.2 migrator.
fileprivate func convertToCAMediaTimingFunctionName(_ input: String) -> CAMediaTimingFunctionName {
return CAMediaTimingFunctionName(rawValue: input)
}
@@ -21,7 +21,7 @@ class FoldingCellDemoTests: XCTestCase {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "MainTableViewController") as! MainTableViewController
_ = vc.view
foldingCell = vc.tableView.dequeueReusableCell(withIdentifier: "FoldingCell", for: IndexPath(row: 0, section: 0)) as! FoldingCell
foldingCell = vc.tableView.dequeueReusableCell(withIdentifier: "FoldingCell", for: IndexPath(row: 0, section: 0)) as? FoldingCell
}
override func tearDown() {
@@ -32,4 +32,10 @@ class FoldingCellDemoTests: XCTestCase {
func testCreateFoldingCell() {
XCTAssertNotNil(foldingCell)
}
func testUnfold() {
XCTAssertEqual(foldingCell.isUnfolded, false)
foldingCell.unfold(true)
XCTAssertEqual(foldingCell.isUnfolded, true)
}
}