2015-06-03 59 views
0

如何將所有故事板中所有UILabels上的textAlignment屬性設置爲NSTextAlignmentNatural如何更改所有故事板中所有UILabels的textAlignment

我們的應用程序有很多故事板和xib文件,有很多屏幕和UILabels。爲了本地化RTL語言(希伯來語,阿拉伯語),textAlignment屬性需要爲NSTextAlignmentNatural而不是左對齊。

Xcode 6.3.2故事板編輯僅支持設置左對齊,居中或右對齊,所以這不是一個選項。它必須在代碼的某個地方完成。一種解決方案是遍歷viewDidLoad中的視圖層次結構並修復所有UILabels,但有很多視圖控制器。有什麼辦法可以在一個地方覆蓋或補充viewDidLoad嗎?方法swizzling不是我們想要使用的選項。有沒有其他方法?

唯一的解決辦法,我可以看到(除了混寫或修改的所有viewDidLoad方法的其它)是子類UIViewController,將代碼添加到viewDidLoad,然後更改所有VC的成爲其中一個子類。

有沒有更好的方法來做到這一點?

+0

您可以通過子類別UILabel創建自定義標籤並將其添加到NSTextAlignmentNatural並在每個故事板和xib中設置它。 –

回答

2

一個解決方案出現在我的腦海中,我不完全確定它可以工作,但我想與您分享。
您可以繼承UILabel並創建一個符合UIAppereance協議的新屬性,該屬性將設置文本對齊。
也許一個類別就足夠了。
使用Appereance代理,您可以製作一個定製應用程序,當然您需要將UILabel更改爲新的自定義類,但是如果沒有以編程方式創建的標籤,則可以使用簡單的文本編輯器進行「查找和替換」在故事板xib上。
檢查herehere以瞭解如何使方法符合上訴代理。

+0

我想避免用自定義子類替換每個故事板中的'UILabel',但是在全局搜索和替換時這樣做聽起來像是一個選項。 – progrmr