今天在寫App的登錄注冊界面闰蛔,其中登錄和注冊之間的切換和印象筆記一樣
印象筆記登錄界面
中間的登錄按鈕會有一個下移以及更改文字的操作,但是我在加了下移動畫之后,再修改按鈕的文字勾邦,就出現了很奇怪的現象,按鈕會先下移然后修改文字之后割择,又跳回到最初的位置
問題操作
這就奇怪了眷篇,看邏輯上一點錯誤也沒有,那怎么會這樣呢锨推?
檢查了下按鈕的類型也是自定義的铅歼,那會不會是動畫影響的呢公壤?
+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0);
在block里面换可,我在setTitle:forState的方法外面,去掉動畫的影響
[UIView setAnimationsEnabled:NO];
[self.loginButton setTitle:@"注 冊" forState:UIControlStateNormal];
[self.loginButton layoutIfNeeded];
[UIView setAnimationsEnabled:YES];
或者
[UIView performWithoutAnimation:^{
[self.loginButton setTitle:@"注 冊" forState:UIControlStateNormal];
[self.loginButton layoutIfNeeded];
}];
都還是不行厦幅。沾鳄。。
干脆把動畫方法去掉确憨,直接改變按鈕的位置再試試译荞。。結果還是一樣休弃,那就納悶了吞歼。。
后來找了很久的資料發(fā)現塔猾,原來是受到了autolayout的影響篙骡,因為在廣泛開始使用autolayout之后,在storyboard丈甸,nib和實現文件里面糯俗,我們可能不像以前那樣去繁瑣的計算坐標了,我們通過自適應的方式睦擂,去確定控件的位置
因為我的登錄按鈕是自適應的得湘,所以在修改了按鈕位置后,再修改文字顿仇,就會出現這樣的問題淘正,但是我打印了很多方法,都沒有發(fā)現調用臼闻,所以不知道系統(tǒng)在設置文字的時候跪帝,又調用了哪個方法
我試著調用了修改其他的屬性的方法,比如背景色些阅,setImage:forState伞剑,這些都沒事,凡是調用了title相關的三個設置都會這樣市埋。黎泣。我就滿臉黑線了恕刘。。
所以目前能找到的解決辦法就是抒倚,該按鈕用坐標計算的方式添加
如果哪位大神找到更好的解決辦法褐着,歡迎留言~
這個是我的個人微信公眾號,會不定期發(fā)表一些iOS開發(fā)文章以及疑難問題和我在閱讀技術和非技術書籍的一些感悟托呕,歡迎大家訂閱含蓉!
宮城Dev