美文网首页程序员iOS学习笔记iOS Developer
iOS 同时修改button位置和文字问题

iOS 同时修改button位置和文字问题

作者: 宫城_ | 来源:发表于2016-04-09 18:13 被阅读2103次

    今天在写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

    相关文章

      网友评论

        本文标题:iOS 同时修改button位置和文字问题

        本文链接:https://www.haomeiwen.com/subject/lckblttx.html