From 5ed7e16d5826163138fdb332d63c381c5cc40362 Mon Sep 17 00:00:00 2001 From: Michael Pchelnikov Date: Tue, 14 Jan 2020 22:46:04 +0100 Subject: [PATCH 1/2] Clean up code --- RxMarbles/AppDelegate.swift | 35 +-- RxMarbles/EventShape.swift | 6 +- RxMarbles/EventView.swift | 49 ++-- RxMarbles/HelpViewController.swift | 254 +++++++++---------- RxMarbles/Image.swift | 64 ++--- RxMarbles/Indexing.swift | 16 +- RxMarbles/OperatorCode.swift | 10 +- RxMarbles/OperatorImplementation.swift | 2 +- RxMarbles/OperatorViewController.swift | 106 ++++---- RxMarbles/OperatorsTableViewController.swift | 18 +- RxMarbles/ResultSequenceView.swift | 2 +- RxMarbles/SceneView.swift | 47 ++-- RxMarbles/SourceSequenceView.swift | 46 ++-- 13 files changed, 329 insertions(+), 326 deletions(-) diff --git a/RxMarbles/AppDelegate.swift b/RxMarbles/AppDelegate.swift index 9552b9a..bf71ff9 100644 --- a/RxMarbles/AppDelegate.swift +++ b/RxMarbles/AppDelegate.swift @@ -18,10 +18,11 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? var introWindow: UIWindow? - private var _disposeBag = DisposeBag() + + private var disposeBag = DisposeBag() - private let _operatorsTableViewController = OperatorsTableViewController() - private let _splitViewController = UISplitViewController() + private let operatorsTableViewController = OperatorsTableViewController() + private let splitViewController = UISplitViewController() func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { @@ -29,19 +30,19 @@ class AppDelegate: UIResponder, UIApplicationDelegate { window = UIWindow() - _splitViewController.delegate = self + splitViewController.delegate = self - let masterNav = UINavigationController(rootViewController: _operatorsTableViewController) - let detailNav = UINavigationController(rootViewController: OperatorViewController(rxOperator: _operatorsTableViewController.selectedOperator)) + let masterNav = UINavigationController(rootViewController: operatorsTableViewController) + let detailNav = UINavigationController(rootViewController: OperatorViewController(rxOperator: operatorsTableViewController.selectedOperator)) if #available(iOS 11, *) { masterNav.navigationBar.prefersLargeTitles = true } - _splitViewController.viewControllers = [masterNav, detailNav] + splitViewController.viewControllers = [masterNav, detailNav] - window?.rootViewController = _splitViewController + window?.rootViewController = splitViewController let showIntroKey = "show_intro" let defaults = UserDefaults.standard @@ -53,7 +54,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { self.window?.makeKeyAndVisible() if (defaults.object(forKey: showIntroKey)! as AnyObject).boolValue == true { - _showHelpWindow() + showHelpWindow() } else { showMainWindow() } @@ -65,12 +66,12 @@ class AppDelegate: UIResponder, UIApplicationDelegate { Notifications.hideHelpWindow.rx() .subscribe { _ in self.showMainWindow() } - .disposed(by: _disposeBag) + .disposed(by: disposeBag) return true } - private func _showHelpWindow() { + private func showHelpWindow() { introWindow = UIWindow() let helpViewController = HelpViewController() helpViewController.helpMode = false @@ -91,11 +92,11 @@ class AppDelegate: UIResponder, UIApplicationDelegate { } @objc func focusSearch() { - if let nav = _splitViewController.viewControllers.first as? UINavigationController { + if let nav = splitViewController.viewControllers.first as? UINavigationController { nav.popToRootViewController(animated: false) - _operatorsTableViewController.focusSearch() + operatorsTableViewController.focusSearch() } } @@ -114,10 +115,10 @@ class AppDelegate: UIResponder, UIApplicationDelegate { operatorRawValue = opRawValue } if let op = Operator(rawValue: operatorRawValue), - let nav = _splitViewController.viewControllers.first as? UINavigationController { + let nav = splitViewController.viewControllers.first as? UINavigationController { nav.popToRootViewController(animated: false) - _operatorsTableViewController.presentingViewController?.dismiss(animated: false, completion: nil) - _operatorsTableViewController.openOperator(op) + operatorsTableViewController.presentingViewController?.dismiss(animated: false, completion: nil) + operatorsTableViewController.openOperator(op) } return false @@ -157,7 +158,7 @@ extension AppDelegate: UISplitViewControllerDelegate { if let detail = primaryViewController.separateSecondaryViewController(for: splitViewController) { navController = UINavigationController(rootViewController: detail) } else { - let op = _operatorsTableViewController.selectedOperator + let op = operatorsTableViewController.selectedOperator navController = UINavigationController(rootViewController: OperatorViewController(rxOperator: op)) } if #available(iOS 11.0, *) { diff --git a/RxMarbles/EventShape.swift b/RxMarbles/EventShape.swift index 16dca72..c5d5e85 100644 --- a/RxMarbles/EventShape.swift +++ b/RxMarbles/EventShape.swift @@ -8,7 +8,7 @@ import UIKit -private var __coloredImages = [String: UIImage]() +private var coloredImages = [String: UIImage]() enum EventShape: String { case circle @@ -30,7 +30,7 @@ enum EventShape: String { func image(_ color: UIColor) -> UIImage { let key = "\(color.description)-\(self)" - if let res = __coloredImages[key] { + if let res = coloredImages[key] { return res } @@ -56,7 +56,7 @@ enum EventShape: String { let res = UIGraphicsGetImageFromCurrentImageContext()! - __coloredImages[key] = res + coloredImages[key] = res return res } } diff --git a/RxMarbles/EventView.swift b/RxMarbles/EventView.swift index 81ea3ce..7306af2 100644 --- a/RxMarbles/EventView.swift +++ b/RxMarbles/EventView.swift @@ -10,6 +10,7 @@ import UIKit import RxSwift class EventView: UIView { + weak var animator: UIDynamicAnimator? = nil weak var sequenceView: SourceSequenceView? @@ -19,20 +20,20 @@ class EventView: UIView { var gravity: UIGravityBehavior? = nil var removeBehavior: UIDynamicItemBehavior? = nil - private let _tapGestureRecognizer = UITapGestureRecognizer() - private let _imageView = UIImageView() + private let tapGestureRecognizer = UITapGestureRecognizer() + private let imageView = UIImageView() var label = UILabel() init(recorded: RecordedType) { super.init(frame: CGRect(x: 0, y: 0, width: 42, height: 50)) - _imageView.contentMode = .center + imageView.contentMode = .center if #available(iOS 13.0, *) { label.textColor = .systemGray } label.font = Font.ultraLightText(11) - addSubview(_imageView) + addSubview(imageView) addSubview(label) layer.shouldRasterize = true @@ -45,22 +46,22 @@ class EventView: UIView { label.sizeToFit() } - _imageView.image = v.shape.image(v.color) - _imageView.frame = CGRect(x: 0, y: 0, width: 16, height: 16) + imageView.image = v.shape.image(v.color) + imageView.frame = CGRect(x: 0, y: 0, width: 16, height: 16) case .completed: - _imageView.image = RxMarbles.Image.complete + imageView.image = RxMarbles.Image.complete if #available(iOS 13.0, *) { - _imageView.tintColor = .label + imageView.tintColor = .label } else { - _imageView.tintColor = .black + imageView.tintColor = .black } layer.zPosition = -1 case .error: - _imageView.image = RxMarbles.Image.error + imageView.image = RxMarbles.Image.error if #available(iOS 13.0, *) { - _imageView.tintColor = .label + imageView.tintColor = .label } else { - _imageView.tintColor = .black + imageView.tintColor = .black } layer.zPosition = -1 } @@ -81,14 +82,14 @@ class EventView: UIView { } } self.recorded = recorded - _tapGestureRecognizer.addTarget(self, action: #selector(EventView.setEventView)) - _tapGestureRecognizer.isEnabled = false - addGestureRecognizer(_tapGestureRecognizer) + tapGestureRecognizer.addTarget(self, action: #selector(EventView.setEventView)) + tapGestureRecognizer.isEnabled = false + addGestureRecognizer(tapGestureRecognizer) } override func layoutSubviews() { super.layoutSubviews() - _imageView.center = CGPoint(x: bounds.width / 2.0, y: bounds.height / 2.0) + imageView.center = CGPoint(x: bounds.width / 2.0, y: bounds.height / 2.0) label.center = CGPoint(x: bounds.width / 2.0, y: bounds.height * 0.15) } @@ -133,11 +134,11 @@ class EventView: UIView { } func addTapRecognizer() { - _tapGestureRecognizer.isEnabled = true + tapGestureRecognizer.isEnabled = true } func removeTapRecognizer() { - _tapGestureRecognizer.isEnabled = false + tapGestureRecognizer.isEnabled = false } @objc func setEventView() { @@ -149,23 +150,23 @@ class EventView: UIView { let alpha: CGFloat = onDeleteZone ? 1.0 : 0.2 switch recorded.value { case .next: - _imageView.image = recorded.value.element?.shape.image.withRenderingMode(.alwaysTemplate) + imageView.image = recorded.value.element?.shape.image.withRenderingMode(.alwaysTemplate) case .completed: - _imageView.image = RxMarbles.Image.complete.withRenderingMode(.alwaysTemplate) + imageView.image = RxMarbles.Image.complete.withRenderingMode(.alwaysTemplate) case .error: - _imageView.image = RxMarbles.Image.error.withRenderingMode(.alwaysTemplate) + imageView.image = RxMarbles.Image.error.withRenderingMode(.alwaysTemplate) } - _imageView.tintColor = color + imageView.tintColor = color self.alpha = alpha } func setColorOnPreview(color: UIColor) { - _imageView.image = recorded.value.element?.shape.image(color) + imageView.image = recorded.value.element?.shape.image(color) } func refreshColorAndValue() { if let color = recorded.value.element?.color { - _imageView.image = recorded.value.element?.shape.image(color) + imageView.image = recorded.value.element?.shape.image(color) } if let value = recorded.value.element?.value { label.text = value diff --git a/RxMarbles/HelpViewController.swift b/RxMarbles/HelpViewController.swift index 987954b..6365e5e 100644 --- a/RxMarbles/HelpViewController.swift +++ b/RxMarbles/HelpViewController.swift @@ -51,50 +51,50 @@ class HelpViewController: AnimatedPagingScrollViewController { var helpMode: Bool = true - private let _disposeBag = DisposeBag() + private let disposeBag = DisposeBag() - private let _logoImageView = RxMarbles.Image.helpLogo.imageView() - private let _reactiveXLogo = RxMarbles.Image.rxLogo.imageView() - private let _resultTimeline = RxMarbles.Image.timeLine.imageView() + private let logoImageView = RxMarbles.Image.helpLogo.imageView() + private let reactiveXLogo = RxMarbles.Image.rxLogo.imageView() + private let resultTimeline = RxMarbles.Image.timeLine.imageView() - private let _closeButton = UIButton(type: .custom) + private let closeButton = UIButton(type: .custom) override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = Color.bgPrimary - _configurePages() + configurePages() } - private func _configurePages() { - _configureLogoImageView() - _configureReactiveXLogo() - _configureResultTimeline() - _configureButtons() - _configureEventViews() + private func configurePages() { + configureLogoImageView() + configureReactiveXLogo() + configureResultTimeline() + configureButtons() + configureEventViews() - _configureExplorePage() - _configureExperimentPage() - _configureSharePage() + configureExplorePage() + configureExperimentPage() + configureSharePage() if helpMode { - _configureRxPage() - _configureAboutPage() - _configureCloseButton() + configureRxPage() + configureAboutPage() + configureCloseButton() } } - private func _configureLogoImageView() { - contentView.addSubview(_logoImageView) + private func configureLogoImageView() { + contentView.addSubview(logoImageView) - _logoImageView.translatesAutoresizingMaskIntoConstraints = false + logoImageView.translatesAutoresizingMaskIntoConstraints = false let scale = CGFloat(0.81666) - _logoImageView.transform = _logoImageView.transform.scaledBy(x: scale, y: scale) + logoImageView.transform = logoImageView.transform.scaledBy(x: scale, y: scale) - let centerY = _logoImageView.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: helpMode ? -200 : 0) + let centerY = logoImageView.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: helpMode ? -200 : 0) - let centerX = _logoImageView.centerXAnchor.constraint(equalTo: view.centerXAnchor, constant: 0) + let centerX = logoImageView.centerXAnchor.constraint(equalTo: view.centerXAnchor, constant: 0) view.addConstraints([centerY, centerX]) @@ -102,9 +102,9 @@ class HelpViewController: AnimatedPagingScrollViewController { if !helpMode { UIView.animate(withDuration: 0.3) { - var center = self._logoImageView.center + var center = self.logoImageView.center center.y = center.y - 200 - self._logoImageView.center = center + self.logoImageView.center = center } } @@ -128,7 +128,7 @@ class HelpViewController: AnimatedPagingScrollViewController { animator.addAnimation(xAnimation) - let scaleAnimation = ScaleAnimation(view: _logoImageView) + let scaleAnimation = ScaleAnimation(view: logoImageView) scaleAnimation[0] = scale scaleAnimation[3.5] = scale scaleAnimation[4] = 1.0 @@ -136,20 +136,20 @@ class HelpViewController: AnimatedPagingScrollViewController { animator.addAnimation(scaleAnimation) } - private func _configureReactiveXLogo() { - contentView.addSubview(_reactiveXLogo) - _reactiveXLogo.translatesAutoresizingMaskIntoConstraints = false + private func configureReactiveXLogo() { + contentView.addSubview(reactiveXLogo) + reactiveXLogo.translatesAutoresizingMaskIntoConstraints = false - _reactiveXLogo.alpha = 0 + reactiveXLogo.alpha = 0 - let centerX = _reactiveXLogo.centerXAnchor.constraint(equalTo: _logoImageView.centerXAnchor) + let centerX = reactiveXLogo.centerXAnchor.constraint(equalTo: logoImageView.centerXAnchor) - let centerY = _reactiveXLogo.centerYAnchor.constraint(equalTo: _logoImageView.centerYAnchor) + let centerY = reactiveXLogo.centerYAnchor.constraint(equalTo: logoImageView.centerYAnchor) contentView.addConstraints([centerX, centerY]) if helpMode { - let alphaAnimation = AlphaAnimation(view: _reactiveXLogo) + let alphaAnimation = AlphaAnimation(view: reactiveXLogo) alphaAnimation[0] = 0.0 alphaAnimation[2.5] = 0.0 alphaAnimation[3] = 1.0 @@ -158,50 +158,50 @@ class HelpViewController: AnimatedPagingScrollViewController { } } - private func _configureCloseButton() { - _closeButton.setImage(RxMarbles.Image.cross, for: .normal) - _closeButton.contentMode = .center + private func configureCloseButton() { + closeButton.setImage(RxMarbles.Image.cross, for: .normal) + closeButton.contentMode = .center - _ = _closeButton.rx.tap.subscribe(onNext: { [unowned self] in + _ = closeButton.rx.tap.subscribe(onNext: { [unowned self] in self.dismiss(animated: true, completion: nil) }) - view.addSubview(_closeButton) - _closeButton.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(closeButton) + closeButton.translatesAutoresizingMaskIntoConstraints = false var top: NSLayoutConstraint if #available(iOS 11, *) { let guide = view.safeAreaLayoutGuide - top = _closeButton.topAnchor.constraint(equalTo: guide.topAnchor, constant: 0) + top = closeButton.topAnchor.constraint(equalTo: guide.topAnchor, constant: 0) } else { - top = _closeButton.topAnchor.constraint(equalTo: view.topAnchor, constant: 20) + top = closeButton.topAnchor.constraint(equalTo: view.topAnchor, constant: 20) } - let right = _closeButton.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -10) + let right = closeButton.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -10) - let width = _closeButton.widthAnchor.constraint(equalToConstant: 40) - let height = _closeButton.heightAnchor.constraint(equalToConstant: 40) + let width = closeButton.widthAnchor.constraint(equalToConstant: 40) + let height = closeButton.heightAnchor.constraint(equalToConstant: 40) view.addConstraints([top, right, width, height]) } - private func _configureResultTimeline() { - contentView.addSubview(_resultTimeline) - _resultTimeline.translatesAutoresizingMaskIntoConstraints = false + private func configureResultTimeline() { + contentView.addSubview(resultTimeline) + resultTimeline.translatesAutoresizingMaskIntoConstraints = false - let centerY = _resultTimeline.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -80) + let centerY = resultTimeline.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -80) - let centerX = _resultTimeline.centerXAnchor.constraint(equalTo: view.centerXAnchor, constant: 0) + let centerX = resultTimeline.centerXAnchor.constraint(equalTo: view.centerXAnchor, constant: 0) - let width = _resultTimeline.widthAnchor.constraint(equalToConstant: 300) + let width = resultTimeline.widthAnchor.constraint(equalToConstant: 300) - let height = _resultTimeline.heightAnchor.constraint(equalToConstant: 8) + let height = resultTimeline.heightAnchor.constraint(equalToConstant: 8) view.addConstraints([centerX, centerY, width, height]) } - private func _configureButtons() { + private func configureButtons() { let experimentNextButton = UIButton(type: .system) let shareNextButton = UIButton(type: .system) let rxNextButton = UIButton(type: .system) @@ -213,31 +213,31 @@ class HelpViewController: AnimatedPagingScrollViewController { aboutNextButton.isHidden = true completedButton.isHidden = true - _configureButton(next: experimentNextButton, onPage: 0) - _configureButton(next: shareNextButton, onPage: 1) + configureButton(next: experimentNextButton, onPage: 0) + configureButton(next: shareNextButton, onPage: 1) if helpMode { - _configureButton(next: rxNextButton, onPage: 2) - _configureButton(next: aboutNextButton, onPage: 3) - _configureButton(next: completedButton, onPage: 4) + configureButton(next: rxNextButton, onPage: 2) + configureButton(next: aboutNextButton, onPage: 3) + configureButton(next: completedButton, onPage: 4) } else { - _configureButton(next: completedButton, onPage: 2) + configureButton(next: completedButton, onPage: 2) } completedButton.setTitle("onCompleted()", for: .normal) } - private func _configureButton(next: UIButton, onPage page: CGFloat) { + private func configureButton(next: UIButton, onPage page: CGFloat) { next.titleLabel?.font = Font.code(.monoRegular, size: 14) next.setTitle("onNext( )", for: .normal) next.rx.tap.subscribe { [unowned self] _ in - self._setOffsetAnimated(page + 1) + self.setOffsetAnimated(page + 1) } - .disposed(by: _disposeBag) + .disposed(by: disposeBag) next.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(next) - let nextCenterX = next.centerXAnchor.constraint(equalTo: _resultTimeline.centerXAnchor) + let nextCenterX = next.centerXAnchor.constraint(equalTo: resultTimeline.centerXAnchor) let nextBottom = next.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -20) contentView.addConstraints([nextCenterX, nextBottom]) @@ -257,7 +257,7 @@ class HelpViewController: AnimatedPagingScrollViewController { animator.addAnimation(nextShowAnimation) } - private func _configureEventViews() { + private func configureEventViews() { let explore = EventView(recorded: RecordedType(time: 0, value: Event.next(ColoredType(value: "Explore", color: Color.nextGreen, shape: .circle)))) let experiment = EventView(recorded: RecordedType(time: 0, value: Event.next(ColoredType(value: "Experiment", color: Color.nextOrange, shape: .triangle)))) let share = EventView(recorded: RecordedType(time: 0, value: Event.next(ColoredType(value: "Share", color: Color.nextBlue, shape: .rect)))) @@ -277,31 +277,31 @@ class HelpViewController: AnimatedPagingScrollViewController { contentView.addConstraints([width, height]) } - _tapRecognizerWithAction(explore, page: 0) - _tapRecognizerWithAction(experiment, page: 1) - _tapRecognizerWithAction(share, page: 2) + tapRecognizerWithAction(explore, page: 0) + tapRecognizerWithAction(experiment, page: 1) + tapRecognizerWithAction(share, page: 2) if helpMode { - _tapRecognizerWithAction(rx, page: 3) - _tapRecognizerWithAction(about, page: 4) - _tapRecognizerWithAction(completed, page: 5) + tapRecognizerWithAction(rx, page: 3) + tapRecognizerWithAction(about, page: 4) + tapRecognizerWithAction(completed, page: 5) } else { - _tapRecognizerWithAction(completed, page: 3) + tapRecognizerWithAction(completed, page: 3) } - let exploreX = explore.centerXAnchor.constraint(equalTo: _resultTimeline.centerXAnchor, constant: helpMode ? -130 : -111) - let exploreY = explore.centerYAnchor.constraint(equalTo: _resultTimeline.centerYAnchor) + let exploreX = explore.centerXAnchor.constraint(equalTo: resultTimeline.centerXAnchor, constant: helpMode ? -130 : -111) + let exploreY = explore.centerYAnchor.constraint(equalTo: resultTimeline.centerYAnchor) contentView.addConstraints([exploreX, exploreY]) if helpMode { - _configureEventViewAnimations(experiment, page: 0, xOffset: -75) - _configureEventViewAnimations(share, page: 1, xOffset: -20) - _configureEventViewAnimations(rx, page: 2, xOffset: 35) - _configureEventViewAnimations(about, page: 3, xOffset: 85) - _configureEventViewAnimations(completed, page: 4, xOffset: 125) + configureEventViewAnimations(experiment, page: 0, xOffset: -75) + configureEventViewAnimations(share, page: 1, xOffset: -20) + configureEventViewAnimations(rx, page: 2, xOffset: 35) + configureEventViewAnimations(about, page: 3, xOffset: 85) + configureEventViewAnimations(completed, page: 4, xOffset: 125) } else { - _configureEventViewAnimations(experiment, page: 0, xOffset: -37) - _configureEventViewAnimations(share, page: 1, xOffset: 37) - _configureEventViewAnimations(completed, page: 2, xOffset: 105) + configureEventViewAnimations(experiment, page: 0, xOffset: -37) + configureEventViewAnimations(share, page: 1, xOffset: 37) + configureEventViewAnimations(completed, page: 2, xOffset: 105) } completed.isHidden = true @@ -309,9 +309,9 @@ class HelpViewController: AnimatedPagingScrollViewController { animator.addAnimation(showCompletedAnimation) } - private func _configureEventViewAnimations(_ eventView: EventView, page: CGFloat, xOffset: CGFloat) { - let x = eventView.centerXAnchor.constraint(equalTo: _resultTimeline.centerXAnchor, constant: page == 0 ? 25 : pageWidth + 25) - let y = eventView.centerYAnchor.constraint(equalTo: _resultTimeline.centerYAnchor, constant: 48) + private func configureEventViewAnimations(_ eventView: EventView, page: CGFloat, xOffset: CGFloat) { + let x = eventView.centerXAnchor.constraint(equalTo: resultTimeline.centerXAnchor, constant: page == 0 ? 25 : pageWidth + 25) + let y = eventView.centerYAnchor.constraint(equalTo: resultTimeline.centerYAnchor, constant: 48) contentView.addConstraints([x, y]) let xAnimation = ConstraintConstantAnimation(superview: contentView, constraint: x) if page > 0 { @@ -326,7 +326,7 @@ class HelpViewController: AnimatedPagingScrollViewController { animator.addAnimation(yAnimation) } - private func _configureExplorePage() { + private func configureExplorePage() { let operatorsCount = Operator.all.count let operatorsLabel: UILabel = { @@ -341,7 +341,7 @@ class HelpViewController: AnimatedPagingScrollViewController { }() contentView.addSubview(operatorsLabel) - let labelBottom = operatorsLabel.bottomAnchor.constraint(equalTo: _resultTimeline.topAnchor, constant: -50) + let labelBottom = operatorsLabel.bottomAnchor.constraint(equalTo: resultTimeline.topAnchor, constant: -50) let labelHeight = operatorsLabel.heightAnchor.constraint(equalToConstant: 20) contentView.addConstraints([labelBottom, labelHeight]) keepView(operatorsLabel, onPage: 0) @@ -395,7 +395,7 @@ class HelpViewController: AnimatedPagingScrollViewController { } } - let attributedStrings = _operatorsCloud() + let attributedStrings = operatorsCloud() cloudLabels.forEach { let index = cloudLabels.firstIndex(of: $0) @@ -403,7 +403,7 @@ class HelpViewController: AnimatedPagingScrollViewController { } } - private func _operatorsCloud() -> [NSMutableAttributedString] { + private func operatorsCloud() -> [NSMutableAttributedString] { var strings: [NSMutableAttributedString] = [] for _ in 0..<4 { strings.append(NSMutableAttributedString()) @@ -419,7 +419,7 @@ class HelpViewController: AnimatedPagingScrollViewController { for op in allOperators[0...20] { let rnd = arc4random() % 4 - let operatorString = _attributedOperatorString(op: op, p: p, rnd: Int(rnd)) + let operatorString = attributedOperatorString(op: op, p: p, rnd: Int(rnd)) let alphaString = NSMutableAttributedString(attributedString: operatorString) alphaString.addAttributes([.foregroundColor : UIColor.clear], range: NSMakeRange(0, operatorString.length)) switch rnd { @@ -451,7 +451,7 @@ class HelpViewController: AnimatedPagingScrollViewController { return strings } - private func _attributedOperatorString(op: Operator, p: NSMutableParagraphStyle, rnd: Int) -> NSMutableAttributedString { + private func attributedOperatorString(op: Operator, p: NSMutableParagraphStyle, rnd: Int) -> NSMutableAttributedString { let shadow = NSShadow() shadow.shadowColor = Color.white switch rnd { @@ -463,7 +463,7 @@ class HelpViewController: AnimatedPagingScrollViewController { } } - private func _configureExperimentPage() { + private func configureExperimentPage() { let navBar = RxMarbles.Image.navBarExperiment.imageView() let timeline = RxMarbles.Image.timelineExperiment.imageView() @@ -544,14 +544,13 @@ class HelpViewController: AnimatedPagingScrollViewController { keepView(timelineLabel, onPage: 1) contentView.addSubview(experimentLabel) - let experimentLabelBottom = experimentLabel.bottomAnchor.constraint(equalTo: _resultTimeline.topAnchor, constant: -50) + let experimentLabelBottom = experimentLabel.bottomAnchor.constraint(equalTo: resultTimeline.topAnchor, constant: -50) contentView.addConstraint(experimentLabelBottom) keepView(experimentLabel, onPage: 1) } - private func _configureSharePage() { - var navBar = RxMarbles.Image.navBarShare.imageView() - + private func configureSharePage() { + let navBar = RxMarbles.Image.navBarShare.imageView() let shareLabel: UILabel = { let label = UILabel() @@ -579,10 +578,9 @@ class HelpViewController: AnimatedPagingScrollViewController { let shareLabelTop = shareLabel.topAnchor.constraint(equalTo: navBar.bottomAnchor, constant: 55) let shareLabelCenterX = shareLabel.centerXAnchor.constraint(equalTo: navBar.centerXAnchor, constant: -10) contentView.addConstraints([shareLabelTop, shareLabelCenterX]) - - + contentView.addSubview(spreadTheWordLabel) - let spreadTheWordLabelBottom = spreadTheWordLabel.bottomAnchor.constraint(equalTo: _resultTimeline.topAnchor, constant: -50) + let spreadTheWordLabelBottom = spreadTheWordLabel.bottomAnchor.constraint(equalTo: resultTimeline.topAnchor, constant: -50) contentView.addConstraint(spreadTheWordLabelBottom) keepView(spreadTheWordLabel, onPage: 2) @@ -591,13 +589,13 @@ class HelpViewController: AnimatedPagingScrollViewController { contentView.addSubview(iconContainer) let iconContainerTop = iconContainer.topAnchor.constraint(equalTo: shareLabel.bottomAnchor, constant: 20) - let iconContainerCenterX = iconContainer.centerXAnchor.constraint(equalTo: _logoImageView.centerXAnchor) + let iconContainerCenterX = iconContainer.centerXAnchor.constraint(equalTo: logoImageView.centerXAnchor) let iconContainerWidth = iconContainer.widthAnchor.constraint(equalToConstant: 300) let iconContainerHeight = iconContainer.heightAnchor.constraint(equalToConstant: 100) contentView.addConstraints([iconContainerTop, iconContainerCenterX, iconContainerWidth, iconContainerHeight]) - _configureShareIcons(container: iconContainer) + configureShareIcons(container: iconContainer) let alpha = AlphaAnimation(view: iconContainer) alpha[1] = 0.0 @@ -623,7 +621,7 @@ class HelpViewController: AnimatedPagingScrollViewController { animator.addAnimation(iconContainerCenterXAnimation) } - private func _configureShareIcons(container: UIView) { + private func configureShareIcons(container: UIView) { let shareLogos = [ RxMarbles.Image.facebook, RxMarbles.Image.twitter, @@ -688,13 +686,13 @@ class HelpViewController: AnimatedPagingScrollViewController { } } - private func _configureRxPage() { + private func configureRxPage() { let container = UIView() container.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(container) keepView(container, onPage: 3) let containerTop = container.topAnchor.constraint(equalTo: contentView.centerYAnchor, constant: -140) - let containerBottom = container.bottomAnchor.constraint(equalTo: _resultTimeline.topAnchor, constant: -50) + let containerBottom = container.bottomAnchor.constraint(equalTo: resultTimeline.topAnchor, constant: -50) let containerWidth = container.widthAnchor.constraint(equalToConstant: 300) contentView.addConstraints([containerTop, containerBottom, containerWidth]) @@ -710,13 +708,13 @@ class HelpViewController: AnimatedPagingScrollViewController { let imageView = RxMarbles.Image.twitter.imageView() imageView.alpha = 0.3 imageView.translatesAutoresizingMaskIntoConstraints = false - _scaleView(view: imageView) + scaleView(view: imageView) return imageView }() let erikMeijerTextView: UITextView = { let textView = UITextView() - textView.attributedText = _erikMeijerText() + textView.attributedText = erikMeijerText() textView.delegate = self textView.isEditable = false textView.isScrollEnabled = false @@ -731,13 +729,13 @@ class HelpViewController: AnimatedPagingScrollViewController { let imageView = RxMarbles.Image.twitter.imageView() imageView.alpha = 0.3 imageView.translatesAutoresizingMaskIntoConstraints = false - _scaleView(view: imageView) + scaleView(view: imageView) return imageView }() let krunoslavZaherTextView: UITextView = { let textView = UITextView() - textView.attributedText = _krunoslavZaherText() + textView.attributedText = krunoslavZaherText() textView.delegate = self textView.isEditable = false textView.isScrollEnabled = false @@ -764,7 +762,7 @@ class HelpViewController: AnimatedPagingScrollViewController { let githubButton: UIButton = { let button = UIButton(type: .custom) button.setImage(RxMarbles.Image.github, for: .normal) - button.rx.tap.subscribe { [unowned self] _ in self.openURLinSafariViewController(url: Link.rxSwift) }.disposed(by: _disposeBag) + button.rx.tap.subscribe { [unowned self] _ in self.openURLinSafariViewController(url: Link.rxSwift) }.disposed(by: disposeBag) button.translatesAutoresizingMaskIntoConstraints = false return button }() @@ -781,7 +779,7 @@ class HelpViewController: AnimatedPagingScrollViewController { let button = UIButton() button.setImage(RxMarbles.Image.twitter, for: .normal) button.alpha = 0.3 - button.rx.tap.subscribe { [unowned self] _ in self.openURLinSafariViewController(url: Link.rxSwiftTwitter) }.disposed(by: _disposeBag) + button.rx.tap.subscribe { [unowned self] _ in self.openURLinSafariViewController(url: Link.rxSwiftTwitter) }.disposed(by: disposeBag) button.translatesAutoresizingMaskIntoConstraints = false return button }() @@ -849,7 +847,7 @@ class HelpViewController: AnimatedPagingScrollViewController { container.addConstraints([rxSwiftTwitterCenterY, rxSwiftTwitterLeading]) } - private func _erikMeijerText() -> NSMutableAttributedString { + private func erikMeijerText() -> NSMutableAttributedString { let text = NSMutableAttributedString(string: "Erik ", attributes: [.font: Font.text(14)]) let twitter = NSMutableAttributedString(string: "@headinthebox", attributes: [.link: Link.erikMeijerTwitter, .font: Font.boldText(14)]) text.append(twitter) @@ -863,7 +861,7 @@ class HelpViewController: AnimatedPagingScrollViewController { return text } - private func _krunoslavZaherText() -> NSMutableAttributedString { + private func krunoslavZaherText() -> NSMutableAttributedString { let text = NSMutableAttributedString(string: "Krunoslav ", attributes: [.font: Font.text(14)]) let twitter = NSMutableAttributedString(string: "@KrunoslavZaher", attributes: [.link: Link.kZaherTwitter, .foregroundColor: UIColor.black, .font: Font.boldText(14)]) text.append(twitter) @@ -877,7 +875,7 @@ class HelpViewController: AnimatedPagingScrollViewController { return text } - private func _configureAboutPage() { + private func configureAboutPage() { let anjLabButton: UIButton = { let button = UIButton(type: .custom) @@ -896,7 +894,7 @@ class HelpViewController: AnimatedPagingScrollViewController { let versionLabel: UILabel = { let label = UILabel() - label.text = _version() + label.text = version() label.translatesAutoresizingMaskIntoConstraints = false return label }() @@ -910,8 +908,8 @@ class HelpViewController: AnimatedPagingScrollViewController { }() contentView.addSubview(rxMarblesLabel) - let rxMarblesLabelCenterY = rxMarblesLabel.centerYAnchor.constraint(equalTo: _logoImageView.centerYAnchor, constant: -12) - let rxMarblesLabelLeading = rxMarblesLabel.leadingAnchor.constraint(equalTo: _resultTimeline.centerXAnchor, constant: pageWidth) + let rxMarblesLabelCenterY = rxMarblesLabel.centerYAnchor.constraint(equalTo: logoImageView.centerYAnchor, constant: -12) + let rxMarblesLabelLeading = rxMarblesLabel.leadingAnchor.constraint(equalTo: resultTimeline.centerXAnchor, constant: pageWidth) contentView.addConstraints([rxMarblesLabelCenterY, rxMarblesLabelLeading]) let rxMarblesLabelLeadingAnimation = ConstraintConstantAnimation(superview: contentView, constraint: rxMarblesLabelLeading) @@ -932,11 +930,11 @@ class HelpViewController: AnimatedPagingScrollViewController { anjLabButton.rx.tap .subscribe { [unowned self] _ in self.openURLinSafariViewController(url: Link.anjlab) } - .disposed(by: _disposeBag) + .disposed(by: disposeBag) contentView.addSubview(anjLabButton) let anjLabButtonTop = anjLabButton.topAnchor.constraint(lessThanOrEqualTo: developedByLabel.bottomAnchor, constant: 0) - let anjLabButtonBottom = anjLabButton.bottomAnchor.constraint(lessThanOrEqualTo: _resultTimeline.topAnchor, constant: -30) + let anjLabButtonBottom = anjLabButton.bottomAnchor.constraint(lessThanOrEqualTo: resultTimeline.topAnchor, constant: -30) contentView.addConstraints([anjLabButtonTop, anjLabButtonBottom]) keepView(anjLabButton, onPage: 4) @@ -946,7 +944,7 @@ class HelpViewController: AnimatedPagingScrollViewController { let ellipse1CenterX = ellipse1.centerXAnchor.constraint(equalTo: anjLabButton.centerXAnchor) let ellipse1CenterY = ellipse1.centerYAnchor.constraint(equalTo: anjLabButton.centerYAnchor) contentView.addConstraints([ellipse1CenterX, ellipse1CenterY]) - _addMotionEffectToView(view: ellipse1, relativity: (vertical: (min: -5, max: 5), horizontal: (min: -5, max: 5))) + addMotionEffectToView(view: ellipse1, relativity: (vertical: (min: -5, max: 5), horizontal: (min: -5, max: 5))) let ellipse2 = RxMarbles.Image.ellipse2.imageView() ellipse2.translatesAutoresizingMaskIntoConstraints = false @@ -954,7 +952,7 @@ class HelpViewController: AnimatedPagingScrollViewController { let ellipse2CenterX = ellipse2.centerXAnchor.constraint(equalTo: anjLabButton.centerXAnchor) let ellipse2CenterY = ellipse2.centerYAnchor.constraint(equalTo: anjLabButton.centerYAnchor) contentView.addConstraints([ellipse2CenterX, ellipse2CenterY]) - _addMotionEffectToView(view: ellipse2, relativity: (vertical: (min: -5, max: 5), horizontal: (min: -5, max: 5))) + addMotionEffectToView(view: ellipse2, relativity: (vertical: (min: -5, max: 5), horizontal: (min: -5, max: 5))) } override func numberOfPages() -> Int { @@ -966,11 +964,11 @@ class HelpViewController: AnimatedPagingScrollViewController { // MARK: Navigation - func _setOffsetAnimated(_ offset: CGFloat) { + private func setOffsetAnimated(_ offset: CGFloat) { scrollView.setContentOffset(CGPoint(x: self.pageWidth * offset, y: 0), animated: true) } - func openURLinSafariViewController(url: NSURL) { + private func openURLinSafariViewController(url: NSURL) { let safariViewController = SFSafariViewController(url: url as URL) present(safariViewController, animated: true, completion: nil) } @@ -1001,7 +999,7 @@ class HelpViewController: AnimatedPagingScrollViewController { coordinator.animate(alongsideTransition: { _ in self.contentView.subviews.forEach { $0.removeFromSuperview() } }) { _ in - self._configurePages() + self.configurePages() self.scrollView.setContentOffset(CGPoint(x: page * self.pageWidth, y: 0), animated: false) } } @@ -1017,7 +1015,7 @@ class HelpViewController: AnimatedPagingScrollViewController { // MARK: Helpers - private func _addMotionEffectToView(view: UIView, relativity: (vertical: (min: Int, max: Int), horizontal: (min: Int, max: Int))) { + private func addMotionEffectToView(view: UIView, relativity: (vertical: (min: Int, max: Int), horizontal: (min: Int, max: Int))) { let verticalMotionEffect = UIInterpolatingMotionEffect(keyPath: "center.y", type: .tiltAlongVerticalAxis) verticalMotionEffect.minimumRelativeValue = relativity.vertical.min @@ -1034,17 +1032,17 @@ class HelpViewController: AnimatedPagingScrollViewController { view.addMotionEffect(group) } - private func _tapRecognizerWithAction(_ eventView: UIView, page: CGFloat) { + private func tapRecognizerWithAction(_ eventView: UIView, page: CGFloat) { let tap = UITapGestureRecognizer() eventView.addGestureRecognizer(tap) tap.rx.event .subscribe { [unowned self] _ in - self._setOffsetAnimated(page) + self.setOffsetAnimated(page) } - .disposed(by: _disposeBag) + .disposed(by: disposeBag) } - private func _version() -> String { + private func version() -> String { guard let info = Bundle.main.infoDictionary, let version = info["CFBundleShortVersionString"] as? String, let build = info["CFBundleVersion"] as? String @@ -1053,7 +1051,7 @@ class HelpViewController: AnimatedPagingScrollViewController { return "v\(version) build \(build)" } - private func _scaleView(view: UIView) { + private func scaleView(view: UIView) { view.transform = CGAffineTransform(scaleX: 0.7, y: 0.7) } } diff --git a/RxMarbles/Image.swift b/RxMarbles/Image.swift index 0452a61..0749ae2 100644 --- a/RxMarbles/Image.swift +++ b/RxMarbles/Image.swift @@ -11,49 +11,49 @@ import UIKit struct Image { - static let timeLine = _named("timeLine").withRenderingMode(.alwaysTemplate) - static let trash = _named("Trash").withRenderingMode(.alwaysTemplate) - static let rubbish = _named("Rubbish") + static let timeLine = named("timeLine").withRenderingMode(.alwaysTemplate) + static let trash = named("Trash").withRenderingMode(.alwaysTemplate) + static let rubbish = named("Rubbish") - static let nextCircle = _named("nextCircle") - static let nextTriangle = _named("nextTriangle") - static let nextRect = _named("nextRect") - static let nextStar = _named("nextStar") + static let nextCircle = named("nextCircle") + static let nextTriangle = named("nextTriangle") + static let nextRect = named("nextRect") + static let nextStar = named("nextStar") - static let complete = _named("complete").withRenderingMode(.alwaysTemplate) - static let error = _named("error").withRenderingMode(.alwaysTemplate) + static let complete = named("complete").withRenderingMode(.alwaysTemplate) + static let error = named("error").withRenderingMode(.alwaysTemplate) - static let helpLogo = _named("helpLogo") - static let rxLogo = _named("reactivex") + static let helpLogo = named("helpLogo") + static let rxLogo = named("reactivex") - static let evernote = _named("evernote") - static let facebook = _named("facebook") - static let hanghout = _named("hanghout") - static let mail = _named("mail") - static let messenger = _named("messenger") - static let skype = _named("skype") - static let slack = _named("slack") - static let trello = _named("trello") - static let twitter = _named("twitter") - static let viber = _named("viber") - static let github = _named("github") + static let evernote = named("evernote") + static let facebook = named("facebook") + static let hanghout = named("hanghout") + static let mail = named("mail") + static let messenger = named("messenger") + static let skype = named("skype") + static let slack = named("slack") + static let trello = named("trello") + static let twitter = named("twitter") + static let viber = named("viber") + static let github = named("github") - static let cross = _named("cross") + static let cross = named("cross") - static let anjlab = _named("anjlab") - static let ellipse1 = _named("anjlab_ellipse1") - static let ellipse2 = _named("anjlab_ellipse2") + static let anjlab = named("anjlab") + static let ellipse1 = named("anjlab_ellipse1") + static let ellipse2 = named("anjlab_ellipse2") - static let navBarShare = _named("navBarShare") + static let navBarShare = named("navBarShare") - static let navBarExperiment = _named("navBarExperiment") - static let timelineExperiment = _named("timelineExperiment") + static let navBarExperiment = named("navBarExperiment") + static let timelineExperiment = named("timelineExperiment") - static let upArrow = _named("upArrow") - static let downArrow = _named("downArrow") + static let upArrow = named("upArrow") + static let downArrow = named("downArrow") } -private func _named(_ name: String) -> UIImage { +private func named(_ name: String) -> UIImage { return UIImage(named: name)! } diff --git a/RxMarbles/Indexing.swift b/RxMarbles/Indexing.swift index 5723bbb..77cd481 100644 --- a/RxMarbles/Indexing.swift +++ b/RxMarbles/Indexing.swift @@ -77,26 +77,26 @@ extension Operator { let activity = NSUserActivity(activityType: UserActivityType.OperatorView.rawValue) activity.title = description - activity.keywords = _keywords() + activity.keywords = keywords() activity.isEligibleForSearch = true activity.isEligibleForPublicIndexing = true activity.userInfo = ["operator": rawValue] - activity.contentAttributeSet = _searchableAttributes() + activity.contentAttributeSet = searchableAttributes() return activity } - private func _keywords() -> Set { + private func keywords() -> Set { return ["Rx", "Reactive", "Operator", "Marbles", description] } - private func _searchableAttributes() -> CSSearchableItemAttributeSet { + private func searchableAttributes() -> CSSearchableItemAttributeSet { let attributes = CSSearchableItemAttributeSet(itemContentType: "url") attributes.title = description attributes.contentDescription = text - attributes.keywords = Array(_keywords()) + attributes.keywords = Array(keywords()) attributes.identifier = rawValue attributes.relatedUniqueIdentifier = rawValue @@ -104,11 +104,11 @@ extension Operator { } - private func _searchableItem() -> CSSearchableItem { + private func searchableItem() -> CSSearchableItem { return CSSearchableItem( uniqueIdentifier: rawValue, domainIdentifier: "operators", - attributeSet: _searchableAttributes() + attributeSet: searchableAttributes() ) } @@ -125,7 +125,7 @@ extension Operator { } let index = CSSearchableIndex.default() - let items = Operator.all.map { $0._searchableItem() } + let items = Operator.all.map { $0.searchableItem() } index.deleteAllSearchableItems { error in if let e = error { return debugPrint(e) diff --git a/RxMarbles/OperatorCode.swift b/RxMarbles/OperatorCode.swift index 3865878..a8f0f77 100644 --- a/RxMarbles/OperatorCode.swift +++ b/RxMarbles/OperatorCode.swift @@ -119,7 +119,7 @@ private let __typeRegex = try? NSRegularExpression(pattern: "(Observable)|(Int64 private let __keywordRegex = try? NSRegularExpression(pattern: "\\bin\\b", options: []) private let __numberRegex = try? NSRegularExpression(pattern: "[^\\$](\\d+)", options: []) -private func __colorize(_ src: NSMutableAttributedString, regex: NSRegularExpression, rangeIndex: Int, attrs: [NSAttributedString.Key: Any]) { +private func colorize(_ src: NSMutableAttributedString, regex: NSRegularExpression, rangeIndex: Int, attrs: [NSAttributedString.Key: Any]) { let str = src.string as NSString @@ -136,24 +136,24 @@ extension Operator { let font = Font.code(.monoRegular, size:18) let src = NSMutableAttributedString(string: code, attributes: [.font: font, .foregroundColor: Color.codeDefault]) - __colorize(src, regex: __methodRegex!, rangeIndex: 0, attrs: [ + colorize(src, regex: __methodRegex!, rangeIndex: 0, attrs: [ NSAttributedString.Key(rawValue: NSAttributedString.Key.font.rawValue): font, NSAttributedString.Key(rawValue: NSAttributedString.Key.foregroundColor.rawValue): Color.codeMethod ] ) - __colorize(src, regex: __numberRegex!, rangeIndex: 1, attrs: [ + colorize(src, regex: __numberRegex!, rangeIndex: 1, attrs: [ NSAttributedString.Key(rawValue: NSAttributedString.Key.font.rawValue): font, NSAttributedString.Key(rawValue: NSAttributedString.Key.foregroundColor.rawValue): Color.codeNumber ] ) - __colorize(src, regex: __typeRegex!, rangeIndex: 0, attrs: [ + colorize(src, regex: __typeRegex!, rangeIndex: 0, attrs: [ NSAttributedString.Key(rawValue: NSAttributedString.Key.font.rawValue): font, NSAttributedString.Key(rawValue: NSAttributedString.Key.foregroundColor.rawValue): Color.codeType ] ) - __colorize(src, regex: __keywordRegex!, rangeIndex: 0, attrs: [ + colorize(src, regex: __keywordRegex!, rangeIndex: 0, attrs: [ NSAttributedString.Key(rawValue: NSAttributedString.Key.font.rawValue): font, NSAttributedString.Key(rawValue: NSAttributedString.Key.foregroundColor.rawValue): Color.codeKeyword ] diff --git a/RxMarbles/OperatorImplementation.swift b/RxMarbles/OperatorImplementation.swift index 5d28376..d68ab6c 100644 --- a/RxMarbles/OperatorImplementation.swift +++ b/RxMarbles/OperatorImplementation.swift @@ -434,7 +434,7 @@ extension Operator { extension Operator { - func _map(_ scheduler: TestScheduler, aO: TestableObservable?, bO: TestableObservable?) -> Observable { + func map(_ scheduler: TestScheduler, aO: TestableObservable?, bO: TestableObservable?) -> Observable { switch self { case .amb: return aO!.amb(bO!) diff --git a/RxMarbles/OperatorViewController.swift b/RxMarbles/OperatorViewController.swift index 644456e..776f7ca 100644 --- a/RxMarbles/OperatorViewController.swift +++ b/RxMarbles/OperatorViewController.swift @@ -14,19 +14,19 @@ import Device class OperatorViewController: UIViewController { - private var _disposeBag = DisposeBag() + private var disposeBag = DisposeBag() - private var _currentActivity: NSUserActivity? + private var currentActivity: NSUserActivity? - private let _scrollView = UIScrollView() - private let _sceneView: SceneView + private let scrollView = UIScrollView() + private let sceneView: SceneView required init?(coder aDecoder: NSCoder) { fatalError("unimplemented") } init(rxOperator: Operator) { - _sceneView = SceneView(rxOperator: rxOperator, frame: CGRect.zero) + sceneView = SceneView(rxOperator: rxOperator, frame: CGRect.zero) super.init(nibName: nil, bundle: nil) @@ -36,10 +36,10 @@ class OperatorViewController: UIViewController { override func setEditing(_ editing: Bool, animated: Bool) { super.setEditing(editing, animated: animated) - _sceneView.editing = editing + sceneView.editing = editing navigationItem.setHidesBackButton(editing, animated: animated) - navigationItem.rightBarButtonItems = _rightButtonItems() + navigationItem.rightBarButtonItems = rightButtonItems() } override func didMove(toParent parent: UIViewController?) { @@ -47,7 +47,7 @@ class OperatorViewController: UIViewController { navigationItem.leftItemsSupplementBackButton = true navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem - navigationItem.rightBarButtonItems = _rightButtonItems() + navigationItem.rightBarButtonItems = rightButtonItems() // Prevent interactivePopGestureRecognizer if we are in navigation controller guard @@ -57,8 +57,8 @@ class OperatorViewController: UIViewController { else { return } [ - _sceneView.sourceSequenceA?.longPressGestureRecorgnizer, - _sceneView.sourceSequenceB?.longPressGestureRecorgnizer + sceneView.sourceSequenceA?.longPressGestureRecorgnizer, + sceneView.sourceSequenceB?.longPressGestureRecorgnizer ] .compactMap { $0 } .forEach(requireRecognizerToFail) @@ -73,60 +73,60 @@ class OperatorViewController: UIViewController { view.backgroundColor = Color.bgPrimary - view.addSubview(_scrollView) - _scrollView.addSubview(_sceneView) + view.addSubview(scrollView) + scrollView.addSubview(sceneView) - _currentActivity = _sceneView.rxOperator.userActivity() + currentActivity = sceneView.rxOperator.userActivity() Notifications.setEventView.rx().subscribe(onNext: { - [unowned self] (notification: Notification) in self._setEventView(notification) - }).disposed(by: _disposeBag) + [unowned self] (notification: Notification) in self.setEventView(notification) + }).disposed(by: disposeBag) Notifications.addEvent.rx().subscribe(onNext: { - [unowned self] (notification: Notification) -> Void in self._addEventToTimeline(notification) - }).disposed(by: _disposeBag) + [unowned self] (notification: Notification) -> Void in self.addEventToTimeline(notification) + }).disposed(by: disposeBag) Notifications.openOperatorDescription.rx().subscribe(onNext: { - [unowned self] (notification: Notification) -> Void in self._openOperatorDocumentation(notification) - }).disposed(by: _disposeBag) + [unowned self] (notification: Notification) -> Void in self.openOperatorDocumentation(notification) + }).disposed(by: disposeBag) } override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() - _scrollView.frame = view.bounds - _sceneView.frame = CGRect(x: 20, y: 0, width: _scrollView.bounds.size.width - 40, height: _scrollView.bounds.height) - _sceneView.layoutSubviews() + scrollView.frame = view.bounds + sceneView.frame = CGRect(x: 20, y: 0, width: scrollView.bounds.size.width - 40, height: scrollView.bounds.height) + sceneView.layoutSubviews() var height: CGFloat = 70.0 - height += _sceneView.resultSequence.bounds.height - if !_sceneView.rxOperator.withoutTimelines { - height += _sceneView.sourceSequenceA.bounds.height - if _sceneView.rxOperator.multiTimelines { - height += _sceneView.sourceSequenceB.bounds.height + height += sceneView.resultSequence.bounds.height + if !sceneView.rxOperator.withoutTimelines { + height += sceneView.sourceSequenceA.bounds.height + if sceneView.rxOperator.multiTimelines { + height += sceneView.sourceSequenceB.bounds.height } } - height += _sceneView.rxOperatorText.bounds.height - _sceneView.frame.size.height = height - _scrollView.contentSize = _sceneView.bounds.size + height += sceneView.rxOperatorText.bounds.height + sceneView.frame.size.height = height + scrollView.contentSize = sceneView.bounds.size } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) - _currentActivity?.becomeCurrent() + currentActivity?.becomeCurrent() } override func viewDidDisappear(_ animated: Bool) { super.viewDidDisappear(animated) - _currentActivity?.resignCurrent() + currentActivity?.resignCurrent() } // MARK: Button Items - private func _rightButtonItems() -> [UIBarButtonItem] { + private func rightButtonItems() -> [UIBarButtonItem] { let shareButtonItem = UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(OperatorViewController.share(_:))) - if _sceneView.rxOperator.withoutTimelines { + if sceneView.rxOperator.withoutTimelines { return [shareButtonItem] } return isEditing ? [editButtonItem] : [editButtonItem, shareButtonItem] @@ -134,15 +134,15 @@ class OperatorViewController: UIViewController { // MARK: Navigation - private func _openOperatorDocumentation(_ notification: Notification) { - let safariViewController = SFSafariViewController(url: _sceneView.rxOperator.url) + private func openOperatorDocumentation(_ notification: Notification) { + let safariViewController = SFSafariViewController(url: sceneView.rxOperator.url) present(safariViewController, animated: true, completion: nil) } // MARK: Snapshot - private func _makeSnapshot() -> UIImage { - let size = CGSize(width: _scrollView.bounds.width, height: _sceneView.bounds.size.height - _sceneView.rxOperatorText.bounds.height) + private func makeSnapshot() -> UIImage { + let size = CGSize(width: scrollView.bounds.width, height: sceneView.bounds.size.height - sceneView.rxOperatorText.bounds.height) UIGraphicsBeginImageContextWithOptions(size, true, UIScreen.main.scale) let c = UIGraphicsGetCurrentContext()! @@ -150,7 +150,7 @@ class OperatorViewController: UIViewController { Color.white.setFill() UIRectFill(CGRect(x: 0, y: 0, width: size.width, height: size.height)) - _scrollView.layer.render(in: c) + scrollView.layer.render(in: c) let snapshot = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() @@ -158,7 +158,7 @@ class OperatorViewController: UIViewController { } @objc private dynamic func share(_ sender: AnyObject?) { - let activity = UIActivityViewController(activityItems: [_makeSnapshot()], applicationActivities: nil) + let activity = UIActivityViewController(activityItems: [makeSnapshot()], applicationActivities: nil) activity.excludedActivityTypes = [UIActivity.ActivityType.assignToContact, .print] guard let rootViewController = (UIApplication.shared.delegate as? AppDelegate)?.window?.rootViewController else { return } if Device.type() == .iPad || Device.type() == .simulator { @@ -172,7 +172,7 @@ class OperatorViewController: UIViewController { // MARK: Alert controllers - private func _addEventToTimeline(_ notification: Notification) { + private func addEventToTimeline(_ notification: Notification) { guard let sender = notification.object as? UIButton, let sequence = sender.superview as? SourceSequenceView @@ -182,7 +182,7 @@ class OperatorViewController: UIViewController { let elementSelector = UIAlertController(title: "Add event", message: nil, preferredStyle: .actionSheet) - let sceneView = _sceneView + let sceneView = self.sceneView let nextAction = UIAlertAction(title: "Next", style: .default) { _ in let e = RxMarbles.next(time, String(arc4random() % 9 + 1), Color.nextRandom, (sequence == sceneView.sourceSequenceA) ? .circle : .rect) sequence.addEventToTimeline(e, animator: sequence.animator) @@ -215,7 +215,7 @@ class OperatorViewController: UIViewController { present(elementSelector, animated: true, completion: nil) } - private func _setEventView(_ notification: Notification) { + private func setEventView(_ notification: Notification) { guard let eventView = notification.object as? EventView else { return } let settingsAlertController = UIAlertController(title: nil, message: nil, preferredStyle: .alert) @@ -228,7 +228,7 @@ class OperatorViewController: UIViewController { preview.center = CGPoint(x: 100.0, y: 25.0) contentViewController.view.addSubview(preview) - let colorsSegmentedControl = _contentViewColorsSegmentedControl(eventView) + let colorsSegmentedControl = contentViewColorsSegmentedControl(eventView) contentViewController.view.addSubview(colorsSegmentedControl) settingsAlertController.setValue(contentViewController, forKey: "contentViewController") @@ -237,27 +237,27 @@ class OperatorViewController: UIViewController { textField.text = text } } - settingsAlertController.addAction(_saveAction(preview, oldEventView: eventView)) + settingsAlertController.addAction(saveAction(preview, oldEventView: eventView)) Observable .combineLatest(settingsAlertController.textFields!.first!.rx.textInput.text.orEmpty, colorsSegmentedControl.rx.value, resultSelector: { text, segment in return (text, segment) }) .subscribe(onNext: { text, segment in - self._updatePreviewEventView(preview, params: (color: Color.nextAll[segment], value: text)) + self.updatePreviewEventView(preview, params: (color: Color.nextAll[segment], value: text)) }) - .disposed(by: _disposeBag) + .disposed(by: disposeBag) } else { settingsAlertController.message = "Delete event?" } let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { _ in } - settingsAlertController.addAction(_deleteAction(eventView: eventView)) + settingsAlertController.addAction(deleteAction(eventView: eventView)) settingsAlertController.addAction(cancelAction) present(settingsAlertController, animated: true, completion: nil) } - private func _contentViewColorsSegmentedControl(_ eventView: EventView) -> UISegmentedControl { + private func contentViewColorsSegmentedControl(_ eventView: EventView) -> UISegmentedControl { let colors = Color.nextAll let currentColor = eventView.recorded.value.element?.color let colorsSegment = UISegmentedControl(items: colors.map { _ in "" } ) @@ -270,7 +270,7 @@ class OperatorViewController: UIViewController { return colorsSegment } - private func _saveAction(_ newEventView: EventView, oldEventView: EventView) -> UIAlertAction { + private func saveAction(_ newEventView: EventView, oldEventView: EventView) -> UIAlertAction { return UIAlertAction(title: "Save", style: .default) { _ in guard let index = oldEventView.sequenceView?.sourceEvents.firstIndex(of: oldEventView) else { return } @@ -278,11 +278,11 @@ class OperatorViewController: UIViewController { oldEventView.sequenceView?.sourceEvents.remove(at: index) oldEventView.sequenceView?.addEventToTimeline(newEventView.recorded, animator: oldEventView.sequenceView?.animator) oldEventView.removeFromSuperview() - self._sceneView.resultSequence.subject.onNext(()) + self.sceneView.resultSequence.subject.onNext(()) } } - private func _deleteAction(eventView: EventView) -> UIAlertAction { + private func deleteAction(eventView: EventView) -> UIAlertAction { return UIAlertAction(title: "Delete", style: .destructive) { _ in eventView.animator?.removeAllBehaviors() eventView.animator?.addBehavior(eventView.gravity!) @@ -290,7 +290,7 @@ class OperatorViewController: UIViewController { } } - private func _updatePreviewEventView(_ preview: EventView, params: (color: UIColor, value: String)) { + private func updatePreviewEventView(_ preview: EventView, params: (color: UIColor, value: String)) { let time = preview.recorded.time let shape = preview.recorded.value.element?.shape let event = Event.next(ColoredType(value: params.value, color: params.color, shape: shape!)) diff --git a/RxMarbles/OperatorsTableViewController.swift b/RxMarbles/OperatorsTableViewController.swift index 97e7bc6..e3793eb 100644 --- a/RxMarbles/OperatorsTableViewController.swift +++ b/RxMarbles/OperatorsTableViewController.swift @@ -14,7 +14,7 @@ class OperatorsTableViewController: UITableViewController { private let viewModel = OperatorsTableViewModel() - private let _disposeBag = DisposeBag() + private let disposeBag = DisposeBag() var selectedOperator: Operator = Operator.combineLatest { didSet { @@ -22,7 +22,7 @@ class OperatorsTableViewController: UITableViewController { } } - private lazy var _searchController: UISearchController = { + private lazy var searchController: UISearchController = { let searchController = UISearchController(searchResultsController: nil) searchController.searchResultsUpdater = self searchController.obscuresBackgroundDuringPresentation = false @@ -46,12 +46,12 @@ class OperatorsTableViewController: UITableViewController { if #available(iOS 11, *) { navigationItem.largeTitleDisplayMode = .always - navigationItem.searchController = _searchController + navigationItem.searchController = searchController tableView.tableHeaderView = UIView() } else { - _searchController.hidesNavigationBarDuringPresentation = false - _searchController.searchBar.backgroundColor = .white - tableView.tableHeaderView = _searchController.searchBar + searchController.hidesNavigationBarDuringPresentation = false + searchController.searchBar.backgroundColor = .white + tableView.tableHeaderView = searchController.searchBar } tableView.backgroundColor = Color.bgPrimary @@ -63,7 +63,7 @@ class OperatorsTableViewController: UITableViewController { .itemSelected .map(self.viewModel.getOperator) .subscribe(onNext: { [unowned self] op in self.openOperator(op) }) - .disposed(by: _disposeBag) + .disposed(by: disposeBag) // Check for force touch feature, and add force touch/previewing capability. if traitCollection.forceTouchCapability == .available { @@ -115,14 +115,14 @@ class OperatorsTableViewController: UITableViewController { func focusSearch() { presentingViewController?.dismiss(animated: false, completion: nil) - _searchController.searchBar.becomeFirstResponder() + searchController.searchBar.becomeFirstResponder() } // MARK: UIContentContainer override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { super.viewWillTransition(to: size, with: coordinator) - _searchController.isActive = false + searchController.isActive = false } } diff --git a/RxMarbles/ResultSequenceView.swift b/RxMarbles/ResultSequenceView.swift index fc6c104..537ee11 100644 --- a/RxMarbles/ResultSequenceView.swift +++ b/RxMarbles/ResultSequenceView.swift @@ -56,7 +56,7 @@ class ResultSequenceView: SequenceView { } } - let o = _operator._map(scheduler, aO:first, bO:second) + let o = _operator.map(scheduler, aO:first, bO:second) var res: TestableObserver? res = scheduler.start(created: 0, subscribed: 0, disposed: 1001) { diff --git a/RxMarbles/SceneView.swift b/RxMarbles/SceneView.swift index 4e6d04f..256eee7 100644 --- a/RxMarbles/SceneView.swift +++ b/RxMarbles/SceneView.swift @@ -13,13 +13,14 @@ import RxCocoa import Device class SceneView: UIView, UITextViewDelegate { + var trashView = RxMarbles.Image.rubbish.withRenderingMode(.alwaysTemplate).imageView() var rxOperator: Operator let rxOperatorText = UITextView() - private let _rxOperatorLabel = UILabel() - private var _aLabel: UILabel? - private var _bLabel: UILabel? + private let rxOperatorLabel = UILabel() + private var aLabel: UILabel? + private var bLabel: UILabel? var sourceSequenceA: SourceSequenceView! { didSet { @@ -69,13 +70,13 @@ class SceneView: UIView, UITextViewDelegate { } private func setTimelines() { - addSubview(_rxOperatorLabel) - _rxOperatorLabel.textAlignment = .center - _rxOperatorLabel.minimumScaleFactor = 0.5 - _rxOperatorLabel.adjustsFontSizeToFitWidth = true - _rxOperatorLabel.attributedText = rxOperator.higlightedCode() + addSubview(rxOperatorLabel) + rxOperatorLabel.textAlignment = .center + rxOperatorLabel.minimumScaleFactor = 0.5 + rxOperatorLabel.adjustsFontSizeToFitWidth = true + rxOperatorLabel.attributedText = rxOperator.higlightedCode() if #available(iOS 13.0, *) { - _rxOperatorLabel.textColor = .label + rxOperatorLabel.textColor = .label } addSubview(rxOperatorText) @@ -90,15 +91,15 @@ class SceneView: UIView, UITextViewDelegate { resultSequence = ResultSequenceView(frame: CGRect(x: 0, y: 0, width: bounds.width, height: 60), rxOperator: rxOperator, sceneView: self) if !rxOperator.withoutTimelines { sourceSequenceA = SourceSequenceView(frame: CGRect(x: 0, y: 0, width: bounds.width, height: 60), scene: self) - _aLabel = UILabel() - _aLabel!.text = "a: " - _aLabel!.font = Font.monospacedRegularText(14) - addSubview(_aLabel!) + aLabel = UILabel() + aLabel!.text = "a: " + aLabel!.font = Font.monospacedRegularText(14) + addSubview(aLabel!) if rxOperator.multiTimelines { - _bLabel = UILabel() - _bLabel!.text = "b: " - _bLabel!.font = Font.monospacedRegularText(14) - addSubview(_bLabel!) + bLabel = UILabel() + bLabel!.text = "b: " + bLabel!.font = Font.monospacedRegularText(14) + addSubview(bLabel!) sourceSequenceB = SourceSequenceView(frame: CGRect(x: 0, y: 0, width: bounds.width, height: 60), scene: self) } } @@ -110,19 +111,19 @@ class SceneView: UIView, UITextViewDelegate { let labelHeight: CGFloat = 40 let widthSpace: CGFloat = UIApplication.shared.statusBarOrientation.isLandscape ? 40.0 : 20.0 - _rxOperatorLabel.frame = CGRect(x: 0, y: 20, width: bounds.width, height: labelHeight) + rxOperatorLabel.frame = CGRect(x: 0, y: 20, width: bounds.width, height: labelHeight) if !rxOperator.withoutTimelines { sourceSequenceA.frame = CGRect(x: 20, y: 20, width: bounds.width - widthSpace, height: height) - _rxOperatorLabel.frame.origin.y = sourceSequenceA.frame.origin.y + height - _aLabel?.frame = CGRect(x: 0, y: sourceSequenceA.frame.origin.y, width: 20, height: height) + rxOperatorLabel.frame.origin.y = sourceSequenceA.frame.origin.y + height + aLabel?.frame = CGRect(x: 0, y: sourceSequenceA.frame.origin.y, width: 20, height: height) if rxOperator.multiTimelines { sourceSequenceB.frame = CGRect(x: 20, y: sourceSequenceA.frame.origin.y + sourceSequenceA.frame.height, width: bounds.width - widthSpace, height: height) - _bLabel?.frame = CGRect(x: 0, y: sourceSequenceB.frame.origin.y, width: 20, height: height) - _rxOperatorLabel.frame.origin.y = sourceSequenceB.frame.origin.y + height + bLabel?.frame = CGRect(x: 0, y: sourceSequenceB.frame.origin.y, width: 20, height: height) + rxOperatorLabel.frame.origin.y = sourceSequenceB.frame.origin.y + height } } - resultSequence.frame = CGRect(x: 20, y: _rxOperatorLabel.frame.origin.y + labelHeight + 10, width: bounds.width - widthSpace, height: height) + resultSequence.frame = CGRect(x: 20, y: rxOperatorLabel.frame.origin.y + labelHeight + 10, width: bounds.width - widthSpace, height: height) let size = rxOperatorText.text.boundingRect(with: CGSize(width: bounds.width, height: 1000 ), options: NSStringDrawingOptions.usesLineFragmentOrigin, diff --git a/RxMarbles/SourceSequenceView.swift b/RxMarbles/SourceSequenceView.swift index 8a6c91e..dbee8c3 100644 --- a/RxMarbles/SourceSequenceView.swift +++ b/RxMarbles/SourceSequenceView.swift @@ -11,13 +11,15 @@ import RxSwift import RxCocoa class SourceSequenceView: SequenceView, UIDynamicAnimatorDelegate { + var addButton = UIButton(type: .contactAdd) let longPressGestureRecorgnizer = UILongPressGestureRecognizer() var animator: UIDynamicAnimator? - private var _panEventView: EventView? - private var _ghostEventView: EventView? + + private var panEventView: EventView? + private var ghostEventView: EventView? - private var _needRefreshEventViews: Bool = true + private var needRefreshEventViews: Bool = true required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") @@ -40,7 +42,7 @@ class SourceSequenceView: SequenceView, UIDynamicAnimatorDelegate { longPressGestureRecorgnizer .rx.event .subscribe(onNext: { - [unowned self] r in self._handleLongPressGestureRecognizer(r: r) + [unowned self] r in self.handleLongPressGestureRecognizer(r: r) }) .disposed(by: disposeBag) @@ -71,11 +73,11 @@ class SourceSequenceView: SequenceView, UIDynamicAnimatorDelegate { if oldTimeArrowFrame != newTimeArrowFrame { sourceEvents.forEach({ _ = $0.removeBehavior }) animator?.removeAllBehaviors() - _needRefreshEventViews = true + needRefreshEventViews = true } - if _needRefreshEventViews { - _needRefreshEventViews = false + if needRefreshEventViews { + needRefreshEventViews = false refreshSourceEventsCenters() } } @@ -90,45 +92,45 @@ class SourceSequenceView: SequenceView, UIDynamicAnimatorDelegate { } } - private func _handleLongPressGestureRecognizer(r: UIGestureRecognizer) { + private func handleLongPressGestureRecognizer(r: UIGestureRecognizer) { let location = r.location(in: self) switch r.state { case .began: if let i = sourceEvents.firstIndex(where: { $0.frame.contains(location) }) { - _panEventView = sourceEvents[i] + panEventView = sourceEvents[i] } - if let panEventView = _panEventView { + if let panEventView = panEventView { panEventView.animator?.removeBehavior(panEventView.snap!) - _ghostEventView = EventView(recorded: panEventView.recorded) - _ghostEventView!.center = CGPoint(x: xPositionByTime(_ghostEventView!.recorded.time), y: bounds.height / 2) - changeGhostColorAndAlpha(ghostEventView: _ghostEventView!, recognizer: r) - addSubview(_ghostEventView!) + ghostEventView = EventView(recorded: panEventView.recorded) + ghostEventView!.center = CGPoint(x: xPositionByTime(ghostEventView!.recorded.time), y: bounds.height / 2) + changeGhostColorAndAlpha(ghostEventView: ghostEventView!, recognizer: r) + addSubview(ghostEventView!) sceneView.showTrashView() } case .changed: - if let panEventView = _panEventView { + if let panEventView = panEventView { let time = timeByXPosition(x: location.x) panEventView.center = CGPoint(x: xPositionByTime(time), y: location.y) panEventView.recorded = RecordedType(time: time, value: panEventView.recorded.value) - changeGhostColorAndAlpha(ghostEventView: _ghostEventView!, recognizer: r) - _ghostEventView!.recorded = panEventView.recorded - _ghostEventView!.center = CGPoint(x: xPositionByTime(time), y: bounds.height / 2) + changeGhostColorAndAlpha(ghostEventView: ghostEventView!, recognizer: r) + ghostEventView!.recorded = panEventView.recorded + ghostEventView!.center = CGPoint(x: xPositionByTime(time), y: bounds.height / 2) sceneView.resultSequence.subject.onNext(()) } case .ended, .cancelled: - _ghostEventView?.removeFromSuperview() - _ghostEventView = nil + ghostEventView?.removeFromSuperview() + ghostEventView = nil - if let panEventView = _panEventView { + if let panEventView = panEventView { animatorAddBehaviorsToPanEventView(panEventView: panEventView, recognizer: r, resultSequence: sceneView.resultSequence) panEventView.superview?.bringSubviewToFront(panEventView) let time = timeByXPosition(x: r.location(in: self).x) panEventView.recorded = RecordedType(time: time, value: panEventView.recorded.value) } - _panEventView = nil + panEventView = nil sceneView.hideTrashView() sceneView.resultSequence.subject.onNext(()) default: break From 5aafac76b6430b3ca8bb8cb2c8df73541349c506 Mon Sep 17 00:00:00 2001 From: Michael Pchelnikov Date: Tue, 14 Jan 2020 22:49:58 +0100 Subject: [PATCH 2/2] Remove unnecessary checkings --- RxMarbles/AppDelegate.swift | 11 +++-------- RxMarbles/HelpViewController.swift | 8 +------- RxMarbles/OperatorViewController.swift | 6 ++---- RxMarbles/OperatorsTableViewController.swift | 14 ++++---------- 4 files changed, 10 insertions(+), 29 deletions(-) diff --git a/RxMarbles/AppDelegate.swift b/RxMarbles/AppDelegate.swift index bf71ff9..53321de 100644 --- a/RxMarbles/AppDelegate.swift +++ b/RxMarbles/AppDelegate.swift @@ -34,11 +34,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate { let masterNav = UINavigationController(rootViewController: operatorsTableViewController) let detailNav = UINavigationController(rootViewController: OperatorViewController(rxOperator: operatorsTableViewController.selectedOperator)) - - if #available(iOS 11, *) { - masterNav.navigationBar.prefersLargeTitles = true - - } + + masterNav.navigationBar.prefersLargeTitles = true splitViewController.viewControllers = [masterNav, detailNav] @@ -161,9 +158,7 @@ extension AppDelegate: UISplitViewControllerDelegate { let op = operatorsTableViewController.selectedOperator navController = UINavigationController(rootViewController: OperatorViewController(rxOperator: op)) } - if #available(iOS 11.0, *) { - navController.navigationBar.prefersLargeTitles = true - } + navController.navigationBar.prefersLargeTitles = true return navController } } diff --git a/RxMarbles/HelpViewController.swift b/RxMarbles/HelpViewController.swift index 6365e5e..333c294 100644 --- a/RxMarbles/HelpViewController.swift +++ b/RxMarbles/HelpViewController.swift @@ -170,13 +170,7 @@ class HelpViewController: AnimatedPagingScrollViewController { closeButton.translatesAutoresizingMaskIntoConstraints = false var top: NSLayoutConstraint - - if #available(iOS 11, *) { - let guide = view.safeAreaLayoutGuide - top = closeButton.topAnchor.constraint(equalTo: guide.topAnchor, constant: 0) - } else { - top = closeButton.topAnchor.constraint(equalTo: view.topAnchor, constant: 20) - } + top = closeButton.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 0) let right = closeButton.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -10) diff --git a/RxMarbles/OperatorViewController.swift b/RxMarbles/OperatorViewController.swift index 776f7ca..324e5b7 100644 --- a/RxMarbles/OperatorViewController.swift +++ b/RxMarbles/OperatorViewController.swift @@ -66,10 +66,8 @@ class OperatorViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() - - if #available(iOS 11, *) { - navigationItem.largeTitleDisplayMode = .always; - } + + navigationItem.largeTitleDisplayMode = .always view.backgroundColor = Color.bgPrimary diff --git a/RxMarbles/OperatorsTableViewController.swift b/RxMarbles/OperatorsTableViewController.swift index e3793eb..34a3d88 100644 --- a/RxMarbles/OperatorsTableViewController.swift +++ b/RxMarbles/OperatorsTableViewController.swift @@ -43,16 +43,10 @@ class OperatorsTableViewController: UITableViewController { ) definesPresentationContext = true - - if #available(iOS 11, *) { - navigationItem.largeTitleDisplayMode = .always - navigationItem.searchController = searchController - tableView.tableHeaderView = UIView() - } else { - searchController.hidesNavigationBarDuringPresentation = false - searchController.searchBar.backgroundColor = .white - tableView.tableHeaderView = searchController.searchBar - } + + navigationItem.largeTitleDisplayMode = .always + navigationItem.searchController = searchController + tableView.tableHeaderView = UIView() tableView.backgroundColor = Color.bgPrimary tableView.tableFooterView = UIView()