ios 11 適配遇到的問題

來源:互聯網
上載者:User


問題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 來源:簡書 著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.