今天在写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];
}];
都还是不行。。。
干脆把动画方法去掉,直接改变按钮的位置再试试。。结果还是一样,那就纳闷了。。
后来找了很久的资料发现,原来是受到了autolayout的影响,因为在广泛开始使用autolayout之后,在storyboard,nib和实现文件里面,我们可能不像以前那样去繁琐的计算坐标了,我们通过自适应的方式,去确定控件的位置
因为我的登录按钮是自适应的,所以在修改了按钮位置后,再修改文字,就会出现这样的问题,但是我打印了很多方法,都没有发现调用,所以不知道系统在设置文字的时候,又调用了哪个方法
我试着调用了修改其他的属性的方法,比如背景色,setImage:forState,这些都没事,凡是调用了title相关的三个设置都会这样。。我就满脸黑线了。。
所以目前能找到的解决办法就是,该按钮用坐标计算的方式添加
如果哪位大神找到更好的解决办法,欢迎留言~
这个是我的个人微信公众号,会不定期发表一些iOS开发文章以及疑难问题和我在阅读技术和非技术书籍的一些感悟,欢迎大家订阅!
宫城Dev
网友评论