Compare commits

...

3 Commits

Author SHA1 Message Date
Duraid Abdul 971de252bf Delete Additional Files directory 2021-06-15 12:14:04 -07:00
Duraid Abdul ef0bd6cd8a Offload Demo files 2021-06-15 12:13:45 -07:00
Duraid Abdul 5f8c210c62 Update LCManager.swift
Improved debug border implementation.
2021-06-12 14:36:27 -07:00
4 changed files with 10 additions and 13 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 MiB

+2 -2
View File
@@ -3,8 +3,8 @@
Welcome to LocalConsole! This Swift Package makes on-device debugging easy with a convenient PiP-style console that can display items in the same way ```print()``` will in Xcode. This tool can also dynamically display view frames and restart SpringBoard right from your live app.
<div>
<img src="https://github.com/duraidabdul/LocalConsole/blob/main/Additional%20Files/Demo_Pan.gif?raw=true" width="320">
<img src="https://github.com/duraidabdul/LocalConsole/blob/main/Additional%20Files/Demo_Resize.gif?raw=true" width="320">
<img src="https://github.com/duraidabdul/Demos/blob/main/Demo_Pan.gif?raw=true" width="320">
<img src="https://github.com/duraidabdul/Demos/blob/main/Demo_Resize.gif?raw=true" width="320">
</div>
## **Setup**
+8 -11
View File
@@ -10,7 +10,6 @@
import UIKit
import SwiftUI
var GLOBAL_DEBUG_BORDERS = false
var GLOBAL_BORDER_TRACKERS: [BorderManager] = []
public class LCManager: NSObject, UIGestureRecognizerDelegate {
@@ -194,8 +193,6 @@ public class LCManager: NSObject, UIGestureRecognizerDelegate {
menuButton.showsMenuAsPrimaryAction = true
consoleView.addSubview(menuButton)
UIView.swizzleDebugBehaviour
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)
}
@@ -351,7 +348,9 @@ public class LCManager: NSObject, UIGestureRecognizerDelegate {
private var debugBordersEnabled = false {
didSet {
GLOBAL_DEBUG_BORDERS = debugBordersEnabled
UIView.swizzleDebugBehaviour_UNTRACKABLE_TOGGLE()
guard debugBordersEnabled else {
GLOBAL_BORDER_TRACKERS.forEach {
$0.deactivate()
@@ -687,20 +686,18 @@ public class UITapStartEndGestureRecognizer: UITapGestureRecognizer {
// MARK: Fun hacks!
extension UIView {
/// Swizzle UIView to use custom frame system when needed.
static let swizzleDebugBehaviour: Void = {
static func swizzleDebugBehaviour_UNTRACKABLE_TOGGLE() {
guard let originalMethod = class_getInstanceMethod(UIView.self, #selector(layoutSubviews)),
let swizzledMethod = class_getInstanceMethod(UIView.self, #selector(swizzled_layoutSubviews)) else { return }
method_exchangeImplementations(originalMethod, swizzledMethod)
}()
}
@objc func swizzled_layoutSubviews() {
swizzled_layoutSubviews()
if GLOBAL_DEBUG_BORDERS {
let tracker = BorderManager(view: self)
GLOBAL_BORDER_TRACKERS.append(tracker)
tracker.activate()
}
let tracker = BorderManager(view: self)
GLOBAL_BORDER_TRACKERS.append(tracker)
tracker.activate()
}
}