使用autoLayout佈局view,在代碼中修改frame解決方案

在xib或者storyBoard中給aView使用autoLayout設定了約束,可是想讓aView作一個簡單的動畫,好比從約束的A位置(0,0,100,100)移動到B位置(0,66,100,100)的簡單動畫。ios

那麼你會發現,若是在xib或者storyBoard中設定了約束,在代碼中直接修改aView的frame行不通的。動畫

實現結果就是在ios7上沒問題,可是在ios8上發現aView從A移動到B,可是又返回A(具體差異還沒找到)ip

解決方案:rem

loginViewTopConstraint = [NSLayoutConstraint constraintWithItem:self.loginView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:66];//定義新約束it

    [self.view removeConstraint:self.topConstraint];//移除舊約束io

    [self.view addConstraint:loginViewTopConstraint];//添加新約束ios7

    [self.view layoutIfNeeded];//使約束生效ios8

相關文章
相關標籤/搜索