项目开发过程中遇到的一些细节问题

天道.jpg
  • 1、在类中添加的集合不要忘了初始化(场景:在创建的一个cell中,添加了一个array作为属性,但是忘了给array初始化,导致从array中取出的值全部为“null”)

  • 2、在调用View设置内容的方法后,不要忘了调用重新绘制UI的方法[self setNeedLayout];尤其是UI根据数据内容动态更新的情况一定要记得调用,否则数据有可能显示不出来(场景:在一个描述商品信息的cell中,有一个label的frame是根据内容动态计算的,动态计算以后忘了重新绘制,导致该label的内容没有显示)

  • 3、当使用一个cell的frame时,不要使用bk_bottom,要使用bk_heightbk_height能得到正确的值,而bk_bototm不可以。(场景:在一个由多个不同样式cell组成的tableView中,由于第一个cell相对于自己的底部视图的相对位置使用了bk_bottom,导致整个tableview的样式没有按照预期 的展现,整个tableview的分割视图都没有了,改用了bk_height作为相对位置后,tableview到达了预期的效果)

  • 4、正确的获取textview中的值的最佳时机是在:

- (void)textViewDidChange:(UITextView *)textView{

 //此处编写获取输入内容的逻辑
}

以下方法是编写输入字数显示逻辑的最佳时机:

//控制输入的字符数
- (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) { //如果输入框内容大于kMaxInputCharacterLength则弹出警告               
_messageView.text = [toBeString substringToIndex:kMaxInputCharacterLength];        
NSString *maxLength = [NSString stringWithFormat:@"不能超过%@个字",@(kMaxInputCharacterLength)];       
[MBProgressHUD showWarning:maxLength];       
 return NO ;    
}
    return YES;
}
  • 5、移除cell的contentView上视图的最佳方法:
[self.contentView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

makeObjectsPerformSelector:为系统方法比起我们自己手动调用遍历移除方法有更好的性能。

  • 6、tableviewheaderView设置的时候要有frame,如果没有frame,在headerViewframe更新以后,需要设置tableviewheaderView,否则tableviewframe会有问题。

  • 7、计算textfield相对于目标视图的frame,用于解决键盘遮挡问题,代码如下:

CGRect frame = textField.frame;
CGRect resultFrame = [textField convertRect:frame toView:self.view]; //把当前视图的frame转换到目标视图上
self.editTextFieldBottom = resultFrame.origin.y + kTextFieldHeight;

你可能感兴趣的:(项目开发过程中遇到的一些细节问题)