iOS調(diào)試UI的工具Lookin《微信讀書》

lookin官網(wǎng)地址
微信讀書iOS團隊出品

Lookin 可以查看與修改 iOS App 里的 UI 對象咬摇,類似于 Xcode 自帶的 UI Inspector 工具呀打,或另一款叫做 Reveal 的軟件营密。
但借助于“控制臺”和“方法監(jiān)聽”功能鼓鲁,Lookin 還可以進行 UI 之外的調(diào)試音同。
此外请敦,雖然 Lookin 主體是一款 macOS 程序肆饶,它亦可嵌入你的 iOS App 而單獨運行在 iPhone 或 iPad 上改衩。
最后,Lookin 完全免費驯镊。

image.png

一堆 View 混在一起分不清葫督?
Lookin 會顯示變量名竭鞍,以及 indexPath 等各種提示

下邊說一下iOS項目中集成的方式:https://lookin.work/faq/integration-guide/
在你的 Podfile 中添加以下內(nèi)容:

pod 'LookinServer', :configurations => ['Debug']

這里指定了只有在 Debug 模式下才能使用 Lookin。

運行 pod install 或 pod update LookinServer

現(xiàn)在你應該已經(jīng)可以正常使用 Lookin 了橄镜。

設置為搖一搖代碼方式:

//Macro.h
//http://www.reibang.com/p/6517ab655be7
#define SuppressPerformSelectorLeakWarning(Stuff) \
do { \
    _Pragma("clang diagnostic push") \
    _Pragma("clang diagnostic ignored \"-Warc-performSelector-leaks\"") \
    Stuff; \
    _Pragma("clang diagnostic pop") \
} while (0)
#ifdef DEBUG // 開發(fā)階段-DEBUG階段:使用Log
#define NSLog(FORMAT, ...) fprintf(stderr,"%s:%d\t%s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
#else // 發(fā)布階段-上線階段:移除Log
#define NSLog(FORMAT, ...) nil
#endif
#define __LogFunc__ NSLog(@"%s",__func__);
//LookinTool.m
+ (void)showAlertSheetWithTitle:(NSString *)title message:(NSString *)message actionArray:(NSArray <NSDictionary*>*)arr{
    /*
     [{ title
        param:{}
     }]
     */
    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleActionSheet];
    [arr enumerateObjectsUsingBlock:^(NSDictionary * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        UIAlertAction *action = [UIAlertAction actionWithTitle:obj[@"title"] style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            SEL selector = NSSelectorFromString(@"perform:");
            if ([LookinTool respondsToSelector:selector]) {
                SuppressPerformSelectorLeakWarning([ToolsClass performSelector:selector withObject:obj]);
            }
        }];
        [alertController addAction:action];
    }];
    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
    [alertController addAction:cancelAction];
    [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:alertController animated:YES completion:nil];
}
+ (void)perform:(NSDictionary *)obj{
    NSDictionary *param = obj[@"param"];
    NSString *LookinTypeStr = @"LookinType";
    if ([param.allKeys containsObject:LookinTypeStr]) {
        [[NSNotificationCenter defaultCenter] postNotificationName:param[LookinTypeStr] object:nil];
    }
}
//這一段代碼可以寫在MainTabBarViewController.m中也可以寫在AppDelegate.m中
// 搖一搖搖動結束
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
    __LogFunc__
#ifdef DEBUG
    [LookinTool showAlertSheetWithTitle:@"LooKin"
                                message:@"UI分析 ??"
                            actionArray:@[@{@"title":@"導出當前UI結構",
                                            @"param":@{@"LookinType":@"Lookin_Export"}
                                           },
                                          @{@"title":@"2D視圖審查元素",
                                            @"param":@{@"LookinType":@"Lookin_2D"}
                                           },
                                         @{@"title":@"3D視圖",
                                            @"param":@{@"LookinType":@"Lookin_3D"}
                                           }
                            ]];

#else
    //nothing to do ...
#endif
}
}
IMG_0061.PNG

IMG_0062.PNG
RPReplay_Final1572577743.gif

官方文檔:

如何在 iPhone 或 iPad 上使用 Lookin 偎快?

  1. 首先,請確保你的 iOS App 已經(jīng)嵌入了 LookinServer.framework
    但即使沒有嵌入 LookinServer洽胶,調(diào)用下面這些步驟所示的代碼也僅僅是不產(chǎn)生任何效果而已晒夹,絕不會導致你的 App 發(fā)生 Crash 等情況。
  1. 調(diào)用下面這句代碼會將當前的 UI 結構導出為 Lookin 文檔姊氓,并使用 AirDrop 或微信等方式轉(zhuǎn)發(fā)出去丐怯。
    該文檔可在電腦上使用 Lookin 客戶端打開。
    [[NSNotificationCenter defaultCenter] postNotificationName:@"Lookin_Export" object:nil];

    image

  2. 調(diào)用下面這句代碼可進入 2D 模式翔横,在該模式下响逢,你可查看 UIView 的常用屬性,或者測量兩個 UIView 之間的距離棕孙。

    [[NSNotificationCenter defaultCenter] postNotificationName:@"Lookin_2D" object:nil];

    image

  3. 調(diào)用下面這句代碼可進入 3D 模式舔亭,在該模式下,你可查看當前的 3D 結構蟀俊。

    [[NSNotificationCenter defaultCenter] postNotificationName:@"Lookin_3D" object:nil];

    image

  4. 你可以把以上三個功能的調(diào)用代碼放到你的 App 的“搖一搖”手勢之類的 Debug 菜單中钦铺,比如下圖這樣。

    image
image.png

image.png
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肢预,一起剝皮案震驚了整個濱河市矛洞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌烫映,老刑警劉巖沼本,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異锭沟,居然都是意外死亡抽兆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門族淮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辫红,“玉大人,你說我怎么就攤上這事祝辣√蓿” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵蝙斜,是天一觀的道長名惩。 經(jīng)常有香客問我,道長孕荠,這世上最難降的妖魔是什么娩鹉? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任滤馍,我火速辦了婚禮,結果婚禮上底循,老公的妹妹穿的比我還像新娘。我一直安慰自己槐瑞,他們只是感情好熙涤,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著困檩,像睡著了一般祠挫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上悼沿,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天等舔,我揣著相機與錄音,去河邊找鬼糟趾。 笑死慌植,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的义郑。 我是一名探鬼主播蝶柿,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼非驮!你這毒婦竟也來了交汤?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤劫笙,失蹤者是張志新(化名)和其女友劉穎芙扎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體填大,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡戒洼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了允华。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片施逾。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖例获,靈堂內(nèi)的尸體忽然破棺而出汉额,到底是詐尸還是另有隱情,我是刑警寧澤榨汤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布蠕搜,位于F島的核電站,受9級特大地震影響收壕,放射性物質(zhì)發(fā)生泄漏妓灌。R本人自食惡果不足惜轨蛤,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望虫埂。 院中可真熱鬧祥山,春花似錦、人聲如沸掉伏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽斧散。三九已至供常,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鸡捐,已是汗流浹背栈暇。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留箍镜,地道東北人源祈。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像色迂,于是被迫代替她去往敵國和親新博。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353