【iOS】FunnyButton 便捷調試按鈕

在平時開發(fā)姜性,運行期間有時候想中途看一下某個視圖或變量的信息瞪慧,雖說打斷點是可以查看,但有時候斷點調試有時候會卡住好一會才能看到(尤其是大項目經(jīng)巢磕睿卡很久)弃酌,極度影響效率氨菇。

基于這種情況,FunnyButton就是為了能夠便捷調試的全局按鈕妓湘,添加好調試事件查蓉,就能隨時點擊查看某個視圖或變量的信息,又可以直接調試某些函數(shù)榜贴。

Feature:
    ? 位于Window層級豌研,不會被app內的界面覆蓋;
    ? 自適應安全區(qū)域竣灌,自動靠邊聂沙,適配橫豎屏;
    ? 可執(zhí)行單個/多個調試事件初嘹;
    ? 兼容`iPhone`&`iPad`及汉;
    ? 兼容Objective-C環(huán)境調試;
    ? API簡單易用屯烦。

Effect

效果.gif

Basic use

為了兼容OC坷随,基于NSObject的擴展提供給所有基類設置調試事件的接口,以UIViewController為例:

  • Swift
// 建議初始化好頁面時設置
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    // 設置調試事件
    replaceFunnyAction {
        // 注意內存泄漏:閉包內部用到`self`記得使用`[weak self]`
        print("點我干森莫")
    }
}

// 建議頁面即將消失時移除這些事件
override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    // 移除調試事件
    removeFunnyActions()
}
  • Objective-C
// 建議初始化好頁面時設置
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    // 設置調試事件
    [self replaceFunnyActionWithWork:^{
        // 注意內存泄漏:閉包內部用到`self`記得使用`__weak`
        NSLog(@"點我干森莫");
    }];
}

// 建議頁面即將消失時移除這些事件
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    // 移除調試事件
    [self removeFunnyActions];
}

API

FunnyButton.API.swift - 公開可使用接口驻龟。

  • replace action - 替換温眉、覆蓋全部事件
/// 替換單個`Action`
@objc func replaceFunnyAction(work: @escaping () -> ()) { ... }

/// 替換多個`Action`
@objc func replaceFunnyActions(_ actions: [FunnyAction]) { ... }
  • add action - 在已有的事件上添加新的事件
/// 添加單個`Action`
@objc func addFunnyAction(name: String? = nil, work: @escaping () -> ()) { ... }

/// 添加多個`Action`
@objc func addFunnyActions(_ actions: [FunnyAction]) { ... }
  • remove action - 刪除目標/全部事件
/// 帶條件移除目標`Action`(`decide`返回`true`則刪除)
@objc func removeFunnyActions(where decide: (FunnyAction) -> Bool) { ... }

/// 移除所有`Action`
@objc func removeFunnyActions() { ... }
  • update layout - 刷新布局
/// 刷新`FunnyButton`布局
@objc func updateFunnyLayout() { ... }

Custom button UI

FunnyButton.swift - 可改動的UI屬性均為靜態(tài)屬性,且有默認實現(xiàn)翁狐,如需改動建議啟動App時配置类溢。

public class FunnyButton: UIButton {
    ......
    
    /// 普通狀態(tài)
    static var normalEmoji = "??"
    
    /// 點擊狀態(tài)
    static var touchingEmoji = "??"
    
    /// 毛玻璃樣式(nil為無毛玻璃)
    static var effect: UIVisualEffect? = {
        if #available(iOS 13, *) {
            return UIBlurEffect(style: .systemThinMaterial)
        }
        return UIBlurEffect(style: .prominent)
    }()
    
    /// 背景色
    static var bgColor: UIColor? = UIColor(red: 200.0 / 255.0, green: 100.0 / 255.0, blue: 100.0 / 255.0, alpha: 0.2)
    
    /// 初始點(想`靠右/靠下`的話,`x/y`的值就設置大一點露懒,最后會靠在安全區(qū)域的邊上)
    static var startPoint: CGPoint = CGPoint(x: 600, y: 100)
    
    /// 安全區(qū)域的邊距
    static var safeMargin: CGFloat = 12
    
    ......
}

// Initialization Example:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    ......
    
    FunnyButton.normalEmoji = "??"
    FunnyButton.touchingEmoji = "??"

    return true
}

Installation

FunnyButton is available through CocoaPods. To install
it, simply add the following line to your Podfile:

pod 'FunnyButton'

Author

Rogue24, zhoujianping24@hotmail.com

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末闯冷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子懈词,更是在濱河造成了極大的恐慌蛇耀,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坎弯,死亡現(xiàn)場離奇詭異纺涤,居然都是意外死亡,警方通過查閱死者的電腦和手機抠忘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門撩炊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人褐桌,你說我怎么就攤上這事衰抑。” “怎么了荧嵌?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵呛踊,是天一觀的道長砾淌。 經(jīng)常有香客問我,道長谭网,這世上最難降的妖魔是什么汪厨? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮愉择,結果婚禮上劫乱,老公的妹妹穿的比我還像新娘。我一直安慰自己锥涕,他們只是感情好衷戈,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著层坠,像睡著了一般殖妇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上破花,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天谦趣,我揣著相機與錄音,去河邊找鬼座每。 笑死前鹅,一個胖子當著我的面吹牛,可吹牛的內容都是我干的峭梳。 我是一名探鬼主播舰绘,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼葱椭!你這毒婦竟也來了除盏?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤挫以,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后窃祝,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掐松,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年粪小,在試婚紗的時候發(fā)現(xiàn)自己被綠了大磺。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡探膊,死狀恐怖杠愧,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情逞壁,我是刑警寧澤流济,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布锐锣,位于F島的核電站,受9級特大地震影響绳瘟,放射性物質發(fā)生泄漏雕憔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一糖声、第九天 我趴在偏房一處隱蔽的房頂上張望斤彼。 院中可真熱鬧,春花似錦蘸泻、人聲如沸琉苇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽并扇。三九已至,卻和暖如春歼争,著一層夾襖步出監(jiān)牢的瞬間拜马,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工沐绒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留俩莽,地道東北人。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓乔遮,卻偏偏與公主長得像扮超,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蹋肮,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內容