newController.shipOrder = fleetViewController.shipOrder
replace(fleetViewController.view, with: newController)
fleetViewController = newController
+ fleetViewController.delegate = self
}
private func windowHeightForFleetViewPosition(position newPosition: FleetViewPosition) -> CGFloat {
guard self.fleetViewController == fleetViewController else { return }
if isExtShpMode && !showsExtShip {
- // hide
- print("hide ext ship")
+ // hide
let diffHeight = fleetViewController.shipViewSize.height
var iFrame = informations.frame
} else if !isExtShpMode && showsExtShip {
//show
- print("show ext shp")
-
let diffHeight = fleetViewController.shipViewSize.height
var iFrame = informations.frame
}
var extDetail: ShipDetailViewController?
+ var extShipAnimating: Bool = false
weak var delegate: FleetViewControllerDelegate?
var enableAnimation: Bool = false
private func showExtShip() {
- print("show ext shp")
-
guard type == .detailViewType else { return }
guard extDetail == nil else { return }
guard let _ = fleet?[6] else { return }
- extDetail = ShipDetailViewController(type: .full)
- guard let extDetail = extDetail else { return }
-
- extDetail.title = "7"
- extDetail.view.autoresizingMask = [.minXMargin]
+ if extShipAnimating {
+ DispatchQueue.main.async(execute: showExtShip)
+ return
+ }
- let width = extDetail.view.frame.width - 1
- var frame = view.frame
- frame.size.width += width
+ extShipAnimating = true
- extDetail.view.frame = details[5].view.frame
- view.addSubview(extDetail.view, positioned: .below, relativeTo: details[5].view)
- view.animator().frame = frame
+ NSAnimationContext.runAnimationGroup({ _ in
+
+ extDetail = ShipDetailViewController(type: .full)
+ guard let extDetail = extDetail else { return }
+
+ extDetail.title = "7"
+ extDetail.view.autoresizingMask = [.minXMargin]
+
+ let width = extDetail.view.frame.width - 1
+ var frame = view.frame
+ frame.size.width += width
+
+ extDetail.view.frame = details[5].view.frame
+ view.addSubview(extDetail.view, positioned: .below, relativeTo: details[5].view)
+ view.animator().frame = frame
+
+ }, completionHandler: { [weak self] in
+
+ self?.extShipAnimating = false
+ })
delegate?.changeShowsExtShip(self, showsExtShip: true)
}
private func hideExtShip() {
- print("hide ext ship")
guard type == .detailViewType else { return }
- guard let extDetail = extDetail else { return }
+ if extShipAnimating {
+ DispatchQueue.main.async(execute: hideExtShip)
+ return
+ }
- var frame = view.frame
- frame.size.width -= extDetail.view.frame.width - 1
- view.animator().frame = frame
+ guard let extDetail = extDetail else { return }
- ships.removeLast()
+ extShipAnimating = true
- DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
+ NSAnimationContext.runAnimationGroup({ _ in
+
+ var frame = view.frame
+ frame.size.width -= extDetail.view.frame.width - 1
+ view.animator().frame = frame
+
+ ships.removeLast()
+
+ }, completionHandler: { [weak self] in
+
extDetail.view.removeFromSuperview()
- }
+
+ self?.extShipAnimating = false
+
+ })
self.extDetail = nil
}
private func checkExtShip() {
-
- fleet.map { print($0) }
-
+
guard type == .detailViewType else { return }
if fleet?[6] != nil {