iOS开发小知识点整理第一期(持续更新)

1.使用系统tabbar时,tabbar上方会有一条线,如果想去掉这条线,添加如下代码即可:

[self.tabBar setClipsToBounds:YES];

2.调用系统相机拍照或者录像完成后,返回后出现导航栏上移的问题,效果图如下:

导航栏上移截图

解决办法,检查info.plist文件中是否设置View controller-based status bar appearance字段,如果设置,将其改为NO即可,更多关于View controller-based status bar appearance的相关知识参考链接View controller-based status bar appearance

3.知道时区,计算不同国家的当前时间的方法如下:

//timer为时区
NSInteger timer = [time_zone integerValue];
NSDate *currentDate = [NSDate date];
NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"MM/d HH:mm"];
if (timer > 0) {
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:(8 + timer * 3600)]];
}else{
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:(8 + (timer - 1) * 3600)]];
  }
NSString *dateStr = [formatter stringFromDate:currentDate];`
   

4.当tableView的样式选择为plain样式时,分区头就处于悬浮状态,如果不想要这种悬浮状态,则需要将tableView的样式修改为grouped样式,但是修改成grouped样式之后,会发现分区头上面会有一个留白,想要去除留白,则需要实现下面的代理方法,注意不要将高度返回为0,否则将没有效果

-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
    
    return 0.01;
}

5.设置tabbar背景颜色的方法

UIView *backView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SelfWideh, 49)];
backView.backgroundColor = [UIColor whiteColor];
[self.tabBar insertSubview:backView atIndex:0];
self.tabBar.opaque = YES;

6.选取系统照片,如果想使用原图,可以进行如下设置

//选取照片时设置
imagePicker.allowsEditing = NO;//不允许编辑
读取照片时,读取原图
 UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

7.iOS实现多级界面模态之后的返回

UIViewController *rootVC = self.presentingViewController;
 while (rootVC.presentingViewController) {
    rootVC = rootVC.presentingViewController;
 }       
[rootVC dismissViewControllerAnimated:YES completion:nil];

8.限制TextField输入的内容的长度的方法

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
{  //string就是此时输入的那个字符textField就是此时正在输入的那个输入框返回YES就是可以改变输入框的值NO相反
    
    if ([string isEqualToString:@"\n"])  //按会车可以改变
    {
        return YES;
    }
    
    NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string]; //得到输入框的内容
    VerifyCodeCell *cell = [self.view viewWithTag:3000];
    
    if (cell.pwdTF == textField)  //判断是否时我们想要限定的那个输入框
    {
        if ([toBeString length] > 16) { //如果输入框内容大于20则弹出警告
            textField.text = [toBeString substringToIndex:16];
            return NO;
        }
    }
    return YES;
}

9.解决多次present之后返回到指定的界面

UIViewController *vc =self.presentingViewController;
    
    //BondDeviceController要跳转的界面
    
    while (![vc isKindOfClass:[BondDeviceController class]]) {
        
        vc = vc.presentingViewController;
        
    }
    [vc dismissViewControllerAnimated:YES completion:nil];

10.控制输入框中输入的内容都为大写字母的方法

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    
    NSRange lowercaseCharRange;
    lowercaseCharRange = [string rangeOfCharacterFromSet:[NSCharacterSet lowercaseLetterCharacterSet]];
    
    if (lowercaseCharRange.location != NSNotFound) {
        
        textField.text = [textField.text stringByReplacingCharactersInRange:range
                                                                 withString:[string uppercaseString]];
        return NO;
    }
    return YES;
}

11.如何修改UITabbarItem上面图片的位置和文字的位置

PersonalViewController *VC3 = [[PersonalViewController alloc]init];
VC3.tabBarItem.title = @"个人";
VC3.tabBarItem.image = [UIImage imageNamed:@"个人灰色"];
VC3.tabBarItem.selectedImage = [[UIImage imageNamed:@"个人亮色"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
//设置文字的位置
[VC3.tabBarItem setTitlePositionAdjustment:UIOffsetMake(0, -5)];
//设置图片的位置
VC3.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0);

12.label自适应高度的代码

SystemInfoCell *cell = [self.view viewWithTag:3000];
//这里文字的大小一定要和控件的文字大小保持一致
NSDictionary *attrs = @{NSFontAttributeName : [UIFont fontWithName:@"HiraginoSansGB-W3" size:[self autoScaleW:14]]};
CGSize maxSize = CGSizeMake(cell.contentLabel.frame.size.width, MAXFLOAT);
// 计算文字占据的高度
CGRect rect = [cell.contentLabel.text boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil];

你可能感兴趣的:(iOS开发小知识点整理第一期(持续更新))