我在視圖上有一個UIButton的子類。在iOS 6,5等方面效果很好。但在iOS 7中,當我嘗試更改標題時(使用setTitle:forState :),我注意到延遲。我已經追蹤到這個問題,因爲該基金會不斷在我的控件上調用layoutSubviews,並導致應用程序整個生命週期的CPU使用率徘徊在100%左右。在iOS 7中,在UIButton子類上不斷調用layoutSubviews方法
在我的子類中,我重寫了layoutSubviews並添加了一個斷點來診斷問題。回溯僅顯示基礎中[UIView layoutSublayersOfLayer]方法調用的方法。
需要注意的是,如果我註釋掉這一行:
[super layoutSubviews];
CPU的問題消失了,但是,當然,出現的其他問題。
有沒有人看到這個?爲什麼iOS 7不斷調用layoutSubviews?
你能提供一些代碼嗎?通常你只會調用該方法,因爲你是'layoutSubviews'的子類。如果你需要強制佈局,你通常會使用'setNeedsLayout'來避免多次佈局調用,所以在你的代碼中可能會有其他地方出現。 –
謝謝,Brian。我只用subclassed layoutSubviews來診斷100%的CPU掛鉤。當我評論這種方法時,問題不會消失。 – dkmp
以同樣的方式,我也嘗試了setNeedsLayout的子類化,並發現(有斷點)它是從[UIButton _beginTitleAnimation](一個私有方法)調用的。我會滿足於禁用按鈕的動畫,但我不知道有辦法做到這一點。 – dkmp