1. 程式人生 > >iOS title view不居中的處理辦法

iOS title view不居中的處理辦法

這篇文章沒有程式碼,但相信看完之後您就會輕鬆的解決您所遇到的問題。

做iOS開發的朋友們可能會遇到自定義導航欄上的left item,right item和title的情況,這種情況下容易出現一個問題,就是title不居中。

在我解決此問題之前也在網上搜了很多次,但是一直沒有遇到比較好的解決辦法,因為幾乎所有的樓主都是說,拿螢幕寬度減去這個,再減去那個,這種方法簡直傻子都能想出來,所以參考意義不大。
本文旨在給大家介紹一個比較通用的解決方法。

首先,說一下title不居中的原因。
其實title不居中的原因很簡單,左右item的寬度不相等了唄。由此導致它們擠壓了title view的位置,又因為title view的frame不好人為去控制,而文字設定的是居中顯示的,由此導致title不居中。

知道了原因,仔細思考一下,解決方式也就一目瞭然了。既然左右item的寬度不等是造成title不居中援引,那麼要想通用、徹底的解決這個問題,自然還得從item的寬度入手。

也許你會問,設計標的left item的寬度是150px,right item是80px,我能怎麼辦?
其實很好辦,關於這個,你要了解的只有一個知識點,那就是父檢視的作用。
很多人認為父檢視的作用就是作為子檢視的target或delegate,來處理子檢視的各種事件,這是很常見的。
另外一點很重要但是很容易被忽略的是,它約束了子檢視的響應範圍,如果其clipsToBounds設定為YES,則其還約束了子檢視的顯示範圍。

看到這裡你會不會恍然大悟?
其實如果遇到上面的假設情況,只需將自定義的左右item最底層檢視的寬度設定為相等,用其子檢視的fram根據設計的frame作為顯示,這樣就可以輕鬆解決title不居中的問題了。

也許你會問,這樣雖然解決了問題,但是左右item可能出現可見區域不響應事件,這個問題怎麼解決?如果作為其他檢視,倒是也能解決,通過重寫這個自定義控制元件父類的- (UIView )hitTest:(CGPoint)point withEvent:(UIEvent )event方法,但是在這裡,這就是個幾乎不能解決的問題,所以在有更好的解決方案之前,只能退而求其次了。

如果您有更好的處理方法,希望能讓我有所瞭解。謝謝