學習中遇到的坑,暫時還未解決,先記錄下來。
最近在研究Autolayout,也寫了一些demo,其中在用AutoLayout實現一個ScrollView的下拉刷新時遇到一個問題:
在ios7中使用AutoLayout在UITableView添加一個子視圖時報以下錯誤:Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Auto Layout still required after executing -layoutSubviews. UITableView's implementation of -layoutSubviews needs to call super.
在網上查了不少資料,說是AutoLayout在ios6的一個bug,在IOS7上已經解決了,但實際使用還是遇到了這個問題,有可能還是沒修復。
網上也找到一些解決的辦法:
比較多的說法是說給UITableView添加一個分類,在分類中覆蓋+load方法,然後再load方法中使用swizzling來調整函數的執行順序,保證執行完Autolayout後調用super -layoutSubviews。這是一個此方法的鏈接:關於swizzling
但試了好幾種方法都沒法解決我的問題,最後沒有辦法了只能通過SetFrame的方式把子視圖添加到UItableView上面。
補充:在ios7上,使用Autolayout添加子視圖到UIScrollView上是沒問題的。