1牺氨、在類中添加的集合不要忘了初始化(場(chǎng)景:在創(chuàng)建的一個(gè)cell中狡耻,添加了一個(gè)array作為屬性墩剖,但是忘了給array初始化,導(dǎo)致從
array
中取出的值全部為“null”)2夷狰、在調(diào)用View設(shè)置內(nèi)容的方法后岭皂,不要忘了調(diào)用重新繪制UI的方法
[self setNeedLayout];
尤其是UI根據(jù)數(shù)據(jù)內(nèi)容動(dòng)態(tài)更新的情況一定要記得調(diào)用,否則數(shù)據(jù)有可能顯示不出來(場(chǎng)景:在一個(gè)描述商品信息的cell中沼头,有一個(gè)label的frame是根據(jù)內(nèi)容動(dòng)態(tài)計(jì)算的爷绘,動(dòng)態(tài)計(jì)算以后忘了重新繪制,導(dǎo)致該label的內(nèi)容沒有顯示)3进倍、當(dāng)使用一個(gè)cell的
frame
時(shí)揉阎,不要使用bk_bottom
,要使用bk_height
背捌,bk_height
能得到正確的值毙籽,而bk_bototm
不可以。(場(chǎng)景:在一個(gè)由多個(gè)不同樣式cell組成的tableView中毡庆,由于第一個(gè)cell相對(duì)于自己的底部視圖的相對(duì)位置使用了bk_bottom
坑赡,導(dǎo)致整個(gè)tableview的樣式?jīng)]有按照預(yù)期 的展現(xiàn),整個(gè)tableview的分割視圖都沒有了么抗,改用了bk_height
作為相對(duì)位置后毅否,tableview到達(dá)了預(yù)期的效果)4、正確的獲取textview中的值的最佳時(shí)機(jī)是在:
- (void)textViewDidChange:(UITextView *)textView{
//此處編寫獲取輸入內(nèi)容的邏輯
}
以下方法是編寫輸入字?jǐn)?shù)顯示邏輯的最佳時(shí)機(jī):
//控制輸入的字符數(shù)
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
NSString *toBeString = [textView.text stringByReplacingCharactersInRange:range withString:text]; NSInteger len = [toBeString length];
if (len > kMaxInputCharacterLength) { //如果輸入框內(nèi)容大于kMaxInputCharacterLength則彈出警告
_messageView.text = [toBeString substringToIndex:kMaxInputCharacterLength];
NSString *maxLength = [NSString stringWithFormat:@"不能超過%@個(gè)字",@(kMaxInputCharacterLength)];
[MBProgressHUD showWarning:maxLength];
return NO ;
}
return YES;
}
- 5蝇刀、移除cell的contentView上視圖的最佳方法:
[self.contentView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
makeObjectsPerformSelector:
為系統(tǒng)方法比起我們自己手動(dòng)調(diào)用遍歷移除方法有更好的性能螟加。
6、
tableview
的headerView
設(shè)置的時(shí)候要有frame
吞琐,如果沒有frame
捆探,在headerView
的frame
更新以后,需要設(shè)置tableview
的headerView
站粟,否則tableview
的frame
會(huì)有問題黍图。7、計(jì)算textfield相對(duì)于目標(biāo)視圖的frame奴烙,用于解決鍵盤遮擋問題,代碼如下:
CGRect frame = textField.frame;
CGRect resultFrame = [textField convertRect:frame toView:self.view]; //把當(dāng)前視圖的frame轉(zhuǎn)換到目標(biāo)視圖上
self.editTextFieldBottom = resultFrame.origin.y + kTextFieldHeight;