斷更4年多的iOS技術(shù)博客博主又回來更新啦(笑哭臉)氯迂!
時隔這么久登錄簡書践叠,發(fā)現(xiàn)依然有很多的評論、關(guān)注嚼蚀、技術(shù)問題探討禁灼,還是挺感動的〗问铮看到之前的文章仍然能幫廣大碼友解決一些問題弄捕,作為娃已3歲的時不時徘徊在代碼邊緣的超齡女碼農(nóng)僻孝,心理頗為欣慰。
那么究竟是什么問題讓博主怒而更新呢守谓?故事要從一個textField說起穿铆。
話說博主昨天在做一個登錄后填寫手機(jī)號碼的頁面,要求輸入框可以隨著輸入數(shù)字的增加而變寬分飞。
好做悴务,textField放在一個框(UIView)里睹限,textField和框的上下左三面固定譬猫,框右邊的與textField右邊距離固定,且框右邊與控制器view的距離大于等于一個固定值(textField最長限制)羡疗,類似這樣(textField用橙色顯示):
上代碼:
// 省略了部分非關(guān)鍵代碼
[self.view addSubview:self.inputBg];
[self.inputBg addSubview:self.inputTextField];
// 添加約束
[self.inputBg mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(60);
make.top.equalTo(self.tipLabel.mas_bottom).offset(60);
make.height.equalTo(@50);
make.right.lessThanOrEqualTo(@(-60));
}];
[self.inputTextField mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(20);
make.top.bottom.offset(0);
make.right.offset(-30);
}];
這樣就搞定啦染服!
但是,當(dāng)我輸入的時候發(fā)現(xiàn)了一個小問題叨恨,就是我的輸入框在輸入文字的時候柳刮,前面1至2個字符被遮擋起來,也就是向左偏移了一小段痒钝”牛看下面這張圖:
圖中我已經(jīng)輸入了三個數(shù)字:123,但是1完全沒有顯示出來送矩,2也被遮擋了一半蚕甥,那我當(dāng)然不爽了。
省略幾萬字的心酸排查搜索過程和數(shù)小時的時間消耗栋荸,最后終于在stackoverflow里面一個不起眼的小問題里面一個不起眼的回答找到的解決方法菇怀。
原來我這個textField和里面文字的字體設(shè)置的都比較大(字號是系統(tǒng)24號,textField高度隨父視圖高度為50)晌块,可能大家在實際項目中用到如此巨大的textField的情況也不多爱沟,所以解決問題的過程中經(jīng)歷了很多波折。
結(jié)論:字號24不動(產(chǎn)品也不讓你動)匆背,textField的高度不要設(shè)置50那么高括眠,你設(shè)置小一點(比如30)初坠,或者干脆不要設(shè)置,autolayout會讓其自己決定高度,就沒有這個問題了苍息。
我要做的就是把textField的約束稍稍改動那么一小下:
[self.inputTextField mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.offset(20);
make.centerY.offset(0);
make.right.offset(-30);
}];
跑一下看看:
這個結(jié)論真的讓我心里一萬只...飛馳而過,至于怎么排查的過程伟叛,就不細(xì)說了略就,估計也沒人想看,結(jié)論放上來踢星,希望以后遇到同樣問題的小伙伴可以節(jié)省一點時間澳叉。