你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> 利用Cocoa Layout Instrument檢視自動布局

利用Cocoa Layout Instrument檢視自動布局

編輯:IOS開發基礎

作者:Pouria Almassi
譯者:waiting_49(博客)
原文:Inspecting Auto Layout with the Cocoa Layout Instrument


前段時間,MarkD跟我們探討了Instruments裡面很多有用的診斷工具,比如TimeProfiler和Energy Diagnostics template。同理,在這裡我將提供一個Cocoa布局工具(CocoaLayoutInstrument)的綜述。

為了有助於探索,這裡我創建了一個簡單的示例。這是一個利用AutoLayout來布局UICollectionView以及其UICollectionViewCell內容的iPhone應用。這裡下載帶有跟蹤輸出的示例工程,下面開始。

CocoaLayoutInstrument可以應用於iOS模擬器和Cocoa桌面應用,但是不能和連接的iOS設備一起使用。CocoaLayoutInstrument提供了一個與NSLayoutConstraint類的實例有關的所有事件的時間軸,這一點和回溯(backtrace)很像。蘋果在AnalysisTools相關的文檔中介紹了該工具。

怎樣啟動Instrument?

執行下面的步驟,開啟CocoaLayoutInstrument

1.打開示例工程

2.選擇Product>Profile(快捷鍵01.png)

3.選擇Cocoa布局模板

4.Instruments窗口將會顯示出來並且為暫停狀態,點擊左上角紅色的記錄按鈕(022.png)

5.滑動圖片,然後點擊暫停按鈕結束事件的記錄。

在這篇文章的余下部分中,為了instructions和結果適配,我將使用我提供的回溯。跟我一樣的話,請打開cocoa-layout-instrument.trace文件。

在這裡能看到什麼?

時間軸下面的行所列出的一連串事件詳情,如下圖所示,統稱為NSLayoutConstraint對象的影響。所有的影響事件都按時間順序列出,最新的事件在最底部。每個事件包含了以下信息:

  • Caller:哪一個類和方法觸發了一個約束的改變

  • Constraint:這一欄是回溯(trace)真正的血肉組成。通過約束(Constraint)的內存地址或者通過標識符屬性(如果可用的話),你能夠辨別出哪個約束被影響了。Constraint欄也包含了VFL字符串,這個字符串闡述了坐標軸所對應的約束線和約束定義的關系。

  • Constant:定義約束的常量值。

  • Event:詳細說明某個約束被加載了什麼樣的操作。這個約束可能被創建,移除,或者添加到window上面了,或者屬性例如標識符(identifier)被修改或者移除了。這些改變事件包括:

    ①創建

    ②添加到窗口

    ③常量修正

    ④標識符改變

    ⑤從窗口移除

img-eventlist-annotated.png

過濾過的事件列表和時間軸

首先,過濾列表,獲取你感興趣的內容。在右上角文本框標出記錄的數據(RecordedData),鍵入0x7ff4e948dce0和0x7ff4e948d6e0。當然你的內存地址會不同,這裡使用你看到的地址。有趣的是,這個文本框只過濾VFL字符串和內存地址。

現在的列表是這些我們想要的約束,讓我們看一下列表的第一個事件,從第0行開始,(_:attribute:relatedBy:toItem:attribute:multiplier:constant:)方法創建了一個約束。在列表的約束行,你可以看到構成這個約束的關系(relationship)和屬性(attributes),UILabel:0x7ff4e948dce0.leading==UIImageView:0x7ff4e948d6e0.leading.意思是,這個UILabel的對象頂邊和這個UIImageView的頂邊相等。在實現部分,隨著這個約束的創建,它的標識符屬性馬上會被設定。回溯裡面輸出的記錄是一個事件:標識符屬性變為subtitleLeadingConstraint。

除了通過內存地址或者約束值來過濾之外,你還可以關注事件的一個子集。點擊水平拖動時間表至頂部,來指定事件的一個特定的時間范圍,如上圖所示。和其他的工具集類似,你會發現拖動左邊的追蹤范圍滑塊來放大堆棧深度(StackDepth),以一窺時間軸上更細時間尺度的事件。

0133.png

向右拖動回溯的比例滑塊進一步觀察

其他控制盤和按鈕

讓我們看看這個工具提供的幾個附加配置。

為了改變時間軸上事件的可視化呈現,打開記錄設置面板(016.png),勾選StatisticstoGraph下面的StackDepth選項:

014.png

記錄設置面板裡時間軸的相關可選配置

例如,改變時間軸的可視風格:

017.png

修改時間軸的風格

對於一個給定的事件,你也可以查看所有導致該事件的堆棧跟蹤信息。首先,選定某個事件,然後打開詳情擴展(ExtendedDetail)面板(?-3)。在工具集窗口的右面板部分,呈現的是這個特定事件的堆棧追蹤信息。

402.png

一個自動布局事件的堆棧追蹤信息

透過表象看本質

Instruments的價值在於,它使我們深刻理解我們代碼的內部運作。CocoaLayoutInstrument擴展了這一點用於自動布局,提供了與某個接口的生命周期有關的每一個步驟的豐富細節。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved