鱼C论坛

 找回密码
 立即注册
查看: 2586|回复: 0

[经验总结] 制作App的问题小结

[复制链接]
发表于 2016-2-9 16:55:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
首先声明我是一名iOS开发工程师,最近迷上了Linux系统开发,因此来到这里来补习C语言所以我会发一些关于iOS开发的小技巧。
——————————————————————————————————————————————————————————我是分割线
前一阵在开发app的过程中遇到了这么一个奇葩的问题如图:
1.gif
当textField输入完毕失去焦点后,输入的文字会闪一下。根据这个现象首先定位这是autolayout产生的问题,于是乎就开始找各种约束,找了一圈也并没有发现任何问题。后来我想先把键盘获得焦点,View上弹的方法注释掉就是以下这些:
 func keyboardWillShowNotification(notification:NSNotification) {
        let userInfo:NSDictionary = notification.userInfo!
        let rect = userInfo[UIKeyboardFrameBeginUserInfoKey]?.CGRectValue
        let keyBoardHeight = CGRectGetHeight(rect!)
        let keyboardDuration = userInfo[UIKeyboardAnimationDurationUserInfoKey]?.doubleValue
   
        UIView .animateWithDuration(keyboardDuration!) { () -> Void in
            self.view.layoutIfNeeded()
            self.tableView.frame = CGRectMake(0, -keyBoardHeight, self.tableView.frame.size.width, self.tableView.frame.size.height)
        }
        
    }
奇葩问题就此消失,后来我注意到这句话layoutIfNeeded()他的含义是
如果,有需要刷新的标记,立即调用layoutSubviews进行布局
意思是当你的界面约束更改了,他不会自动进行重新布局需要调用以上方法进行立刻布局。
问题来了,我的view更改的仅仅是y座标,而没有对布局进行任何的更改,调用了此方法后,view的y座标变了,所以textfield的文字就会闪,删掉self.view.layoutIfNeeded()后问题解决。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 11:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表