問題1.自訂UIToolBar,升級到ios 11 之後,點擊沒有任何反應
原因:iOS11的UIToolbar 增添了有一個UIToolbarContentView的子控制項,覆蓋在最表層,以至於添加的button都在底部,點擊沒有反應。
解決方案:
最優方法:
在執行個體化UIToolBar之後,
添加
[toolbar layoutIfNeeded]; 即可。(親測可用)
例如:
UIToolbar *toolbar = [UIToolbar new];
[self addSubview: toolbar];
[toolbar layoutIfNeeded];
// 添加要添加的子視圖
<here one can add all subviews needed>
解決方案來源:
https://stackoverflow.com/questions/46107640/ios11-uitoolbar-contentview
其他方法參考:(通過添加item)
// UIToolbar,其中rectButton、circleButton 有一個buttonClick:方法
UIToolbar *markToolBar = [[UIToolbar alloc] initWithFrame:CGRectZero];
UIBarButtonItem *rectItem = [[UIBarButtonItem alloc] initWithCustomView:self.rectButton];
UIBarButtonItem *circleItem = [[UIBarButtonItem alloc] initWithCustomView:self.circleButton];
UIBarButtonItem *flexibleitem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:(UIBarButtonSystemItemFlexibleSpace) target:self action:nil];
NSArray *items = @[rectItem,flexibleitem,circleItem];
[markToolBar setItems:items animated:YES];
只能通過添加item 實現了
解決方案來源:
http://www.cocoachina.com/bbs/read.php?tid-1725608.html
問題2. tableview 上拉重新整理時候,資料載入完畢,但是位置產生了位移
原因: Table Views :在iOS 11中預設啟用Self-Sizing
這個應該是UITableView最大的改變。我們知道在iOS8引入Self-Sizing 之後,我們可以通過實現estimatedRowHeight相關的屬性來展示動態內容,實現了estimatedRowHeight屬性後,得到的初始contenSize是個估算值,是通過estimatedRowHeight xcell的個數得到的,並不是最終的contenSize,tableView不會一次性計算所有的cell的高度了,只會計算當前螢幕能夠顯示的cell個數再加上幾個,滑動時,tableView不停地得到新的cell,更新自己的contenSize,在滑到最後的時候,會得到正確的contenSize。建立tableView到顯示出來的過程中,contentSize的計算過程如下圖:
解決方案;
如果目前項目中沒有使用estimateRowHeight屬性,在iOS11的環境下就要注意了,因為開啟 Self-Sizing之後,tableView是使用 estimateRowHeight屬性的,這樣就會造成contentSize和contentOffset值的變化,如果是有動畫是觀察這兩個屬性的變化進行的,就會造成動畫的異常,因為在估算行高機制下,contentSize的值是一點點地變化更新的,所有cell顯示完後才是最終的contentSize值。因為不會緩衝正確的行高,tableView reloadData的時候,會重新計算contentSize,就有可能會引起contentOffset的變化。iOS11下不想使用 Self-Sizing的話,可以通過以下方式關閉:
self.tableView.estimatedRowHeight = 0;self.tableView.estimatedSectionHeaderHeight = 0;self.tableView.estimatedSectionFooterHeight = 0;
問題3解決方案來源: 作者:sonialiu 連結:http://www.jianshu.com/p/370d82ba3939 來源:簡書 著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。