iOS10 View的frame的坑

前幾天手機(jī)更新了iOS10的系統(tǒng),也把Xcode更新到了8,解決了一些適配的問題,項(xiàng)目正常地跑起來就沒去管。
今天早上偶然打開一個(gè)之前比較少用的界面,發(fā)現(xiàn)界面計(jì)算的高度全亂了,瞬間就懵了。。
PS:這個(gè)問題只是出現(xiàn)在用xib或sb搭的界面

不一樣的frame

iOS10 之前, 我們?cè)?code>xib文件中拖好控件,設(shè)置好約束,拉出控件IBOutlet屬性,然后通常就會(huì)在viewDidLoad或者viewWillAppear做一些設(shè)置跟賦值,甚至碰到一些高度動(dòng)態(tài)的界面,通常也會(huì)拉出約束屬性,根據(jù)控件的frame,然后手動(dòng)計(jì)算constant來計(jì)算該頁面的實(shí)際高度等等操作,這些都能達(dá)到我們想要的效果。

但是在iOS 10中,這些似乎都不能正常的執(zhí)行,原因就是frame的改變。默認(rèn)情況下,系統(tǒng)會(huì)把控件初始化為{0,0,1000,1000},即使你在xib里面設(shè)置好位置跟寬高。因此你會(huì)發(fā)現(xiàn),在viewDidLoad或者viewWillAppear中一旦使用xxx.frame.size.height或者xxx.frame.origin.y,都會(huì)得到1000或者0

Paste_Image.png

解決方法

其實(shí)解決方法很簡單,就是把你在viewDidLoad里面使用到frame計(jì)算或者設(shè)置圓角啊什么的代碼,用一個(gè)私有方法包裝起來,例如:- (void)viewDidCalculateInitialFrame 然后

- (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];
    [self viewDidCalculateInitialFrame];
}

之后你會(huì)發(fā)現(xiàn),一切又回歸正常了!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 因?yàn)橐Y(jié)局swift3.0中引用snapKit的問題,看到一篇介紹Xcode8,swift3變化的文章,覺得很詳細(xì)...
    uniapp閱讀 4,877評(píng)論 0 12
  • 由于問題設(shè)計(jì)分類較多,而簡書中目錄功能不可用,故在此標(biāo)識(shí)分類,可以使用Command+F相關(guān)分類名,進(jìn)行問題查找。...
    丶生如夏花閱讀 7,376評(píng)論 3 4
  • 收假上班以來,開始并一直堅(jiān)持奉行“唯讀書與跑步不可辜負(fù)”,可能真的是被一篇有這樣標(biāo)題的文章觸動(dòng)了,也可能只是因...
    bony閱讀 296評(píng)論 0 0
  • 重陽節(jié)是中國的傳統(tǒng)祭祖節(jié),對(duì)它的印象最初來自一首詩,九月九日憶山東兄弟,從那時(shí)起才知道重陽節(jié)的存在。 ...
    撒哈拉的玫瑰閱讀 1,136評(píng)論 0 0
  • 2015年的時(shí)候就聽說我們老板晚上不吃飯,因?yàn)樗瞬桓?,如果再長個(gè)大肚子就太有損形象了。所以他貫徹晚上不吃飯?jiān)瓌t,...
    乘格帆閱讀 275評(píng)論 2 1

友情鏈接更多精彩內(nèi)容