有沒有辦法檢查一個屬性是否在UIAppearance代理上設置?如何檢查外觀屬性是否已設置?
比方說,我想要做的事,如:
self.lineWidth = appearance.lineWidth ? : kDefaultLineWidth;
如果線寬上的代理設置爲零,因爲從沒有被設置在所有這將是難以區分這將無法正常工作(假設它是一個CGFloat)。
有沒有辦法檢查一個屬性是否在UIAppearance代理上設置?如何檢查外觀屬性是否已設置?
比方說,我想要做的事,如:
self.lineWidth = appearance.lineWidth ? : kDefaultLineWidth;
如果線寬上的代理設置爲零,因爲從沒有被設置在所有這將是難以區分這將無法正常工作(假設它是一個CGFloat)。
您不需要進行檢查;外觀系統將爲你照顧它。在你的初始化器,設置lineWidth
到您的默認值使用直接訪問伊娃的而不是它的制定者:
_lineWidth = kDefaultLineWidth;
如果外觀性已經爲lineWidth
設置,這將被覆蓋。如果不是,它不會被覆蓋。
當您通過設置器設置lineWidth
時,會出現問題。外觀系統會將該實例標記爲已定製,並且不會覆蓋您的更改。
來源:http://petersteinberger.com/blog/2013/uiappearance-for-custom-views/
有一個問題是,UIAppearance碎冰雞尾酒有默認外觀都制定者和曲目時,他們得到改變,讓UIAppearance不會覆蓋您的自定義。 [如果]我們在初始化程序中使用setter,...對於UIAppearance,現在看起來好像我們已經自己定製了這個類。課程:在初始化程序中,只能使用直接ivar訪問以符合UI_APPEARANCE_SELECTOR的屬性。