ios10 自動約束的坑

用ios的手機打開項目的基本詳情頁,發現底部的tableFooterView沒法往上拖動了,如圖所示:


我這的tableFooterView是關聯一個自動佈局的view,打印了一下tableFooterView的高度居然顯示爲0,但是這在ios10之前是完全沒問題的,網上搜了很久很久,在stackoverflow上提問可能因爲格式問題還被管理人員警告並且刪帖,折騰了幾天終於找到一篇:http://m.2cto.com/kf/201506/411277.html

這裏我就直接複製過來,如下所示:

【343】【奇怪的bug】

問題描述:

1、tableView是通過IB,並且有自動佈局;

2、headView是通過代碼創建的

3、給tableView加headView,沒有問題

4、給tableView加footerView,當用代碼創建時,也沒有問題

5、但是:當footerView是用自動佈局時,tableView首次展示時,footView高度爲0;

但是,當jump到一個控制器,並且再次返回時,tableView再次顯示,此時footView高度正常了。。。

問題原因:

猜測是:tableView的自動佈局影響的

解決方法:

當前 想到的是:線程延遲幾秒再給tableView設置footView

self.tableView.tableHeaderView = self.headView;

_footerView = [RowView RowView];

// 這裏加個延遲,不然會高度爲0,應該是自動佈局導致的問題

kWeakSelf

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.05 * NSEC_PER_SEC)),dispatch_get_main_queue(), ^{

kStrongSelf

strongSelf.tableView.tableFooterView = _footerView;

[UIView animateWithDuration:5 animations:^{

[strongSelf.view layoutIfNeeded];

[strongSelf.tableView layoutIfNeeded];

}];

});

用了這個解決方法,我的問題得以解決,最終效果圖:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章