美文网首页iOS开发小知识点好东西
iOS开发小知识点整理第一期(持续更新)

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

作者: coder小鹏 | 来源:发表于2017-08-06 17:30 被阅读83次

    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开发小知识点整理第一期(持续更新)

        本文链接:https://www.haomeiwen.com/subject/ezsftxtx.html