From: masakih Date: Fri, 24 Nov 2017 11:47:48 +0000 (+0900) Subject: 素早く7隻の艦隊を含む艦隊を切り替えると表示がおかしくなる問題を修正 X-Git-Tag: 1.9b28~1 X-Git-Url: http://git.osdn.net/view?p=kcd%2FKCD.git;a=commitdiff_plain;h=a4434be685aac17bf6ef53ccd22bf80c11712a75 素早く7隻の艦隊を含む艦隊を切り替えると表示がおかしくなる問題を修正 --- diff --git a/KCD/BroserWindowController.swift b/KCD/BroserWindowController.swift index 9ff09118..89f4a993 100644 --- a/KCD/BroserWindowController.swift +++ b/KCD/BroserWindowController.swift @@ -414,6 +414,7 @@ extension BroserWindowController { newController.shipOrder = fleetViewController.shipOrder replace(fleetViewController.view, with: newController) fleetViewController = newController + fleetViewController.delegate = self } private func windowHeightForFleetViewPosition(position newPosition: FleetViewPosition) -> CGFloat { @@ -552,9 +553,8 @@ extension BroserWindowController: FleetViewControllerDelegate { guard self.fleetViewController == fleetViewController else { return } if isExtShpMode && !showsExtShip { - // hide - print("hide ext ship") + // hide let diffHeight = fleetViewController.shipViewSize.height var iFrame = informations.frame @@ -571,8 +571,6 @@ extension BroserWindowController: FleetViewControllerDelegate { } else if !isExtShpMode && showsExtShip { //show - print("show ext shp") - let diffHeight = fleetViewController.shipViewSize.height var iFrame = informations.frame diff --git a/KCD/FleetViewController.swift b/KCD/FleetViewController.swift index 9094045e..e96feffe 100644 --- a/KCD/FleetViewController.swift +++ b/KCD/FleetViewController.swift @@ -130,6 +130,7 @@ final class FleetViewController: NSViewController { } var extDetail: ShipDetailViewController? + var extShipAnimating: Bool = false weak var delegate: FleetViewControllerDelegate? var enableAnimation: Bool = false @@ -489,45 +490,69 @@ extension FleetViewController { 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 @@ -535,9 +560,7 @@ extension FleetViewController { } private func checkExtShip() { - - fleet.map { print($0) } - + guard type == .detailViewType else { return } if fleet?[6] != nil {