Skip to content

Commit f1a54f2

Browse files
committed
Automigration to swift 3
1 parent 3e62b4c commit f1a54f2

File tree

9 files changed

+93
-93
lines changed

9 files changed

+93
-93
lines changed

MenuExample.xcodeproj/project.pbxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,7 @@
414414
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
415415
PRODUCT_BUNDLE_IDENTIFIER = "com.yalantis.ios.$(PRODUCT_NAME:rfc1034identifier)";
416416
PRODUCT_NAME = MenuExample;
417-
SWIFT_VERSION = 2.3;
417+
SWIFT_VERSION = 3.0;
418418
};
419419
name = Debug;
420420
};
@@ -427,7 +427,7 @@
427427
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
428428
PRODUCT_BUNDLE_IDENTIFIER = "com.yalantis.ios.$(PRODUCT_NAME:rfc1034identifier)";
429429
PRODUCT_NAME = MenuExample;
430-
SWIFT_VERSION = 2.3;
430+
SWIFT_VERSION = 3.0;
431431
};
432432
name = Release;
433433
};

MenuExample/Controller/MenuViewController.swift

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,26 @@ import UIKit
88
import SideMenu
99

1010
protocol MenuViewControllerDelegate: class {
11-
func menu(menu: MenuViewController, didSelectItemAtIndex index: Int, atPoint point: CGPoint)
12-
func menuDidCancel(menu: MenuViewController)
11+
func menu(_ menu: MenuViewController, didSelectItemAtIndex index: Int, atPoint point: CGPoint)
12+
func menuDidCancel(_ menu: MenuViewController)
1313
}
1414

1515
class MenuViewController: UITableViewController {
1616
weak var delegate: MenuViewControllerDelegate?
1717
var selectedItem = 0
1818

19-
override func viewWillAppear(animated: Bool) {
19+
override func viewWillAppear(_ animated: Bool) {
2020
super.viewWillAppear(animated)
2121

22-
let indexPath = NSIndexPath(forRow: selectedItem, inSection: 0)
23-
tableView.selectRowAtIndexPath(indexPath, animated: false, scrollPosition: .None)
22+
let indexPath = IndexPath(row: selectedItem, section: 0)
23+
tableView.selectRow(at: indexPath, animated: false, scrollPosition: .none)
2424
}
2525

2626
}
2727

2828
extension MenuViewController {
2929
@IBAction
30-
private func dismissMenu() {
30+
fileprivate func dismissMenu() {
3131
delegate?.menuDidCancel(self)
3232
}
3333
}
@@ -41,14 +41,14 @@ extension MenuViewController: Menu {
4141

4242
// MARK: - UITableViewDelegate
4343
extension MenuViewController {
44-
override func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? {
44+
override func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? {
4545
return indexPath == tableView.indexPathForSelectedRow ? nil : indexPath
4646
}
4747

48-
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
49-
let rect = tableView.rectForRowAtIndexPath(indexPath)
50-
var point = CGPointMake(rect.midX, rect.midY)
51-
point = tableView.convertPoint(point, toView: nil)
52-
delegate?.menu(self, didSelectItemAtIndex: indexPath.row, atPoint:point)
48+
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
49+
let rect = tableView.rectForRow(at: indexPath)
50+
var point = CGPoint(x: rect.midX, y: rect.midY)
51+
point = tableView.convert(point, to: nil)
52+
delegate?.menu(self, didSelectItemAtIndex: (indexPath as NSIndexPath).row, atPoint:point)
5353
}
5454
}

MenuExample/Controller/ViewController.swift

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,25 @@ import UIKit
88
import SideMenu
99

1010
class ViewController: UIViewController {
11-
private var selectedIndex = 0
12-
private var transitionPoint: CGPoint!
13-
private var contentType: ContentType = .Music
14-
private var navigator: UINavigationController!
15-
lazy private var menuAnimator : MenuTransitionAnimator! = MenuTransitionAnimator(mode: .Presentation, shouldPassEventsOutsideMenu: false) { [unowned self] in
16-
self.dismissViewControllerAnimated(true, completion: nil)
11+
fileprivate var selectedIndex = 0
12+
fileprivate var transitionPoint: CGPoint!
13+
fileprivate var contentType: ContentType = .Music
14+
fileprivate var navigator: UINavigationController!
15+
lazy fileprivate var menuAnimator : MenuTransitionAnimator! = MenuTransitionAnimator(mode: .presentation, shouldPassEventsOutsideMenu: false) { [unowned self] in
16+
self.dismiss(animated: true, completion: nil)
1717
}
18-
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
19-
switch (segue.identifier, segue.destinationViewController) {
20-
case (.Some("presentMenu"), let menu as MenuViewController):
18+
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
19+
switch (segue.identifier, segue.destination) {
20+
case (.some("presentMenu"), let menu as MenuViewController):
2121
menu.selectedItem = selectedIndex
2222
menu.delegate = self
2323
menu.transitioningDelegate = self
24-
menu.modalPresentationStyle = .Custom
25-
case (.Some("embedNavigator"), let navigator as UINavigationController):
24+
menu.modalPresentationStyle = .custom
25+
case (.some("embedNavigator"), let navigator as UINavigationController):
2626
self.navigator = navigator
2727
self.navigator.delegate = self
2828
default:
29-
super.prepareForSegue(segue, sender: sender)
29+
super.prepare(for: segue, sender: sender)
3030
}
3131
}
3232
}
@@ -37,23 +37,23 @@ extension ViewController: MenuViewControllerDelegate {
3737
transitionPoint = point
3838
selectedIndex = index
3939

40-
let content = storyboard!.instantiateViewControllerWithIdentifier("Content") as! ContentViewController
40+
let content = storyboard!.instantiateViewController(withIdentifier: "Content") as! ContentViewController
4141
content.type = contentType
4242
self.navigator.setViewControllers([content], animated: true)
4343

44-
dispatch_async(dispatch_get_main_queue()) {
45-
self.dismissViewControllerAnimated(true, completion: nil)
44+
DispatchQueue.main.async {
45+
self.dismiss(animated: true, completion: nil)
4646
}
4747
}
4848

4949
func menuDidCancel(_: MenuViewController) {
50-
dismissViewControllerAnimated(true, completion: nil)
50+
dismiss(animated: true, completion: nil)
5151
}
5252
}
5353

5454
extension ViewController: UINavigationControllerDelegate {
55-
func navigationController(_: UINavigationController, animationControllerForOperation _: UINavigationControllerOperation,
56-
fromViewController _: UIViewController, toViewController _: UIViewController) -> UIViewControllerAnimatedTransitioning? {
55+
func navigationController(_: UINavigationController, animationControllerFor _: UINavigationControllerOperation,
56+
from _: UIViewController, to _: UIViewController) -> UIViewControllerAnimatedTransitioning? {
5757

5858
if let transitionPoint = transitionPoint {
5959
return CircularRevealTransitionAnimator(center: transitionPoint)
@@ -63,13 +63,13 @@ extension ViewController: UINavigationControllerDelegate {
6363
}
6464

6565
extension ViewController: UIViewControllerTransitioningDelegate {
66-
func animationControllerForPresentedController(presented: UIViewController, presentingController _: UIViewController,
67-
sourceController _: UIViewController) -> UIViewControllerAnimatedTransitioning? {
66+
func animationController(forPresented presented: UIViewController, presenting _: UIViewController,
67+
source _: UIViewController) -> UIViewControllerAnimatedTransitioning? {
6868
return menuAnimator
6969
}
7070

71-
func animationControllerForDismissedController(dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
72-
return MenuTransitionAnimator(mode: .Dismissal)
71+
func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
72+
return MenuTransitionAnimator(mode: .dismissal)
7373
}
7474

7575
}

MenuExample/Misc/AnimationDelegate.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
import QuartzCore
88

99
class AnimationDelegate: NSObject, CAAnimationDelegate {
10-
private let completion: () -> Void
10+
fileprivate let completion: () -> Void
1111

12-
init(completion: () -> Void) {
12+
init(completion: @escaping () -> Void) {
1313
self.completion = completion
1414
}
1515

MenuExample/Misc/CircularRevealAnimator.swift

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@
66

77
import QuartzCore
88

9-
private func SquareAroundCircle(center: CGPoint, radius: CGFloat) -> CGRect {
9+
private func SquareAroundCircle(_ center: CGPoint, radius: CGFloat) -> CGRect {
1010
assert(0 <= radius, "radius must be a positive value")
11-
return CGRectInset(CGRect(origin: center, size: CGSizeZero), -radius, -radius)
11+
return CGRect(origin: center, size: CGSize.zero).insetBy(dx: -radius, dy: -radius)
1212
}
1313

1414
class CircularRevealAnimator {
1515
var completion: () -> Void = {}
1616

17-
private let layer: CALayer
18-
private let mask: CAShapeLayer
19-
private let animation: CABasicAnimation
17+
fileprivate let layer: CALayer
18+
fileprivate let mask: CAShapeLayer
19+
fileprivate let animation: CABasicAnimation
2020

2121
var duration: CFTimeInterval {
2222
get { return animation.duration }
@@ -29,8 +29,8 @@ class CircularRevealAnimator {
2929
}
3030

3131
init(layer: CALayer, center: CGPoint, startRadius: CGFloat, endRadius: CGFloat) {
32-
let startPath = CGPathCreateWithEllipseInRect(SquareAroundCircle(center, radius: startRadius), nil)
33-
let endPath = CGPathCreateWithEllipseInRect(SquareAroundCircle(center, radius: endRadius), nil)
32+
let startPath = CGPath(ellipseIn: SquareAroundCircle(center, radius: startRadius), transform: nil)
33+
let endPath = CGPath(ellipseIn: SquareAroundCircle(center, radius: endRadius), transform: nil)
3434

3535
self.layer = layer
3636

@@ -50,6 +50,6 @@ class CircularRevealAnimator {
5050
func start() {
5151
layer.mask = mask
5252
mask.frame = layer.bounds
53-
mask.addAnimation(animation, forKey: "reveal")
53+
mask.add(animation, forKey: "reveal")
5454
}
55-
}
55+
}

MenuExample/Misc/CircularRevealTransitionAnimator.swift

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,25 @@
77
import UIKit
88

99
class CircularRevealTransitionAnimator: NSObject {
10-
private let duration = 0.5
11-
private let center: CGPoint
10+
fileprivate let duration = 0.5
11+
fileprivate let center: CGPoint
1212

1313
init(center: CGPoint) {
1414
self.center = center
1515
}
1616
}
1717

1818
extension CircularRevealTransitionAnimator: UIViewControllerAnimatedTransitioning {
19-
func animateTransition(context: UIViewControllerContextTransitioning) {
20-
let frame = context.finalFrameForViewController(context.viewControllerForKey(UITransitionContextToViewControllerKey)!)
19+
func animateTransition(using context: UIViewControllerContextTransitioning) {
20+
let frame = context.finalFrame(for: context.viewController(forKey: UITransitionContextViewControllerKey.to)!)
2121

22-
let source = context.viewForKey(UITransitionContextFromViewKey)!
23-
let target = context.viewForKey(UITransitionContextToViewKey)!
22+
let source = context.view(forKey: UITransitionContextViewKey.from)!
23+
let target = context.view(forKey: UITransitionContextViewKey.to)!
2424

2525
target.frame = frame
26-
context.containerView().insertSubview(target, aboveSubview: source)
26+
context.containerView.insertSubview(target, aboveSubview: source)
2727

28-
let center = target.convertPoint(self.center, fromView: nil)
28+
let center = target.convert(self.center, from: nil)
2929
let radius: CGFloat = {
3030
let x = max(center.x, frame.width - center.x)
3131
let y = max(center.y, frame.height - center.y)
@@ -34,15 +34,15 @@ extension CircularRevealTransitionAnimator: UIViewControllerAnimatedTransitionin
3434

3535
let animator = CircularRevealAnimator(layer: target.layer, center: center, startRadius: 0, endRadius: radius)
3636
animator.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn)
37-
animator.duration = transitionDuration(context)
37+
animator.duration = transitionDuration(using: context)
3838
animator.completion = {
3939
source.removeFromSuperview()
4040
context.completeTransition(true)
4141
}
4242
animator.start()
4343
}
4444

45-
func transitionDuration(transitionContext: UIViewControllerContextTransitioning?) -> NSTimeInterval {
45+
func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
4646
return duration
4747
}
4848
}

SideMenu.xcodeproj/project.pbxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@
258258
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
259259
PRODUCT_NAME = "$(TARGET_NAME)";
260260
SKIP_INSTALL = YES;
261-
SWIFT_VERSION = 2.3;
261+
SWIFT_VERSION = 3.0;
262262
};
263263
name = Debug;
264264
};
@@ -276,7 +276,7 @@
276276
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
277277
PRODUCT_NAME = "$(TARGET_NAME)";
278278
SKIP_INSTALL = YES;
279-
SWIFT_VERSION = 2.3;
279+
SWIFT_VERSION = 3.0;
280280
};
281281
name = Release;
282282
};

SideMenu/MenuItemsAnimator.swift

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import UIKit
88

9-
private func TransformForRotatingLayer(layer: CALayer, angle: CGFloat) -> CATransform3D {
9+
private func TransformForRotatingLayer(_ layer: CALayer, angle: CGFloat) -> CATransform3D {
1010
let offset = layer.bounds.width / 2
1111

1212
var transform = CATransform3DIdentity
@@ -21,9 +21,9 @@ class MenuItemsAnimator {
2121
var completion: () -> Void = {}
2222
var duration: CFTimeInterval = 0
2323

24-
private let layers: [CALayer]
25-
private let startAngle: CGFloat
26-
private let endAngle: CGFloat
24+
fileprivate let layers: [CALayer]
25+
fileprivate let startAngle: CGFloat
26+
fileprivate let endAngle: CGFloat
2727

2828
init(views: [UIView], startAngle: CGFloat, endAngle: CGFloat) {
2929
self.layers = views.map { $0.layer }
@@ -34,17 +34,17 @@ class MenuItemsAnimator {
3434
func start() {
3535
let count = Double(layers.count)
3636
let duration = self.duration * count / (4 * count - 3)
37-
for (index, layer) in layers.enumerate() {
37+
for (index, layer) in layers.enumerated() {
3838
layer.transform = TransformForRotatingLayer(layer, angle: startAngle)
3939

4040
let delay = 3 * duration * Double(index) / count
41-
UIView.animateWithDuration(duration, delay: delay, options: .CurveEaseIn, animations: {
41+
UIView.animate(withDuration: duration, delay: delay, options: .curveEaseIn, animations: {
4242
layer.transform = TransformForRotatingLayer(layer, angle: self.endAngle)
4343
}, completion: nil)
4444
}
4545

46-
let delay = dispatch_time(DISPATCH_TIME_NOW, Int64(self.duration * Double(NSEC_PER_SEC)))
47-
dispatch_after(delay, dispatch_get_main_queue()) {
46+
let delay = DispatchTime.now() + Double(Int64(self.duration * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC)
47+
DispatchQueue.main.asyncAfter(deadline: delay) {
4848
self.completion()
4949
}
5050
}

0 commit comments

Comments
 (0)