首先簡單介紹我遇到的問題:自定義titleView,裏面有一些label,顯示內容須要請求網絡得到,因而就出現了加載titleView比較晚(頁面已經顯示,纔開始設置titleView)的狀況,發現這種狀況下titleView的位置會變化。api
下面代碼是蘋果對titleView的API定義:
網絡
@property(nonatomic,retain) UIView *titleView; // Custom view to use in lieu of a title. May be sized horizontally. Only used when item is topmost on the stack.
根據api定義,它會在水平方向調整尺寸。可是我監聽titleView的frame後發現,無論你設置titleView的frame是多少,系統會從新調整它的orgin,x和y都會調整,也就是說不光是水平方向,可是不會改變寬高。 測試
經測試,這個調整動做會在設置titleView後很快的時間裏執行,若是不是由於有網絡請求的過程,它會在頁面展示以前完成,因此這種狀況下,你怎麼設置frame都不會出現問題。atom
結論:在vc加載過程當中(loadView或viewdidload)就設置好titleView,而後根據網絡請求的結果再去更新titleView中的展現內容,這樣就不會讓用戶看到titleView的位置移動了。spa
(上面推理,根據代碼監聽titleView進行的,若是有什麼地方不對,還望大牛指出)code