美文网首页程序员
UI小方法:给文字加粗和检测输入的是否为纯数字

UI小方法:给文字加粗和检测输入的是否为纯数字

作者: 指尖书法 | 来源:发表于2017-04-12 23:46 被阅读40次

    一、给文字设置粗体

    • 第一种方法
    labelname.font = [UIFont fontWithName:@"Helvetica-Bold" size:15];
    

    Helvetica-Bold还可以换成
    "Arial-BoldMT",
    ArialMT,
    "Arial-ItalicMT",
    "Arial-BoldItalicMT等等
    字体族科后面加-Bold就是加粗 加-Oblique就是倾斜
    不知道后面的字体名怎么写,一幅图搞定
    字体虽然很多,但只对英文有效,中文是看不到效果的😀

    字体大全
    • 第二种方法
    labelname.font = [UIFont boldSystemFontOfSize:15.0];
    

    这种方法可能导致个别字体加粗不成功,用过这个之后就不要再用第一个方法了。

    二、检查一段字符串是否单纯数字/字母/两者混合

    这个方法是根据计算字符串的长度来判断字符串类型的。
    纯数字,每个字符的长度为1
    字母

    • 定义一个枚举用来接收方法返回值
    //仿照系统写枚举的方法
    typedef NS_ENUM(NSUInteger, StringType) {
        EnglishType = 1 ,
        NumberType = 2,
        EnglishAndNumberType = 3,
        OtherType = 4
    };
    
    • 直接写方法

    方法中用到的选项详解(两个枚举)

    
    typedef NS_OPTIONS(NSUInteger, NSMatchingOptions) {
       NSMatchingReportProgress         = 1 << 0, //找到最长的匹配字符串后调用block回调
       NSMatchingReportCompletion       = 1 << 1, //找到任何一个匹配串后都回调一次block
       NSMatchingAnchored               = 1 << 2, //从匹配范围的开始出进行极限匹配
       NSMatchingWithTransparentBounds  = 1 << 3, //允许匹配的范围超出设置的范围
       NSMatchingWithoutAnchoringBounds = 1 << 4  //禁止^和$自动匹配行还是和结束
    };
                2、block回调中的flags枚举对应如下:
    
    typedef NS_OPTIONS(NSUInteger, NSMatchingFlags) {
       NSMatchingProgress               = 1 << 0, //匹配到最长串是被设置     
       NSMatchingCompleted              = 1 << 1, //全部分配完成后被设置    
       NSMatchingHitEnd                 = 1 << 2, //匹配到设置范围的末尾时被设置   
       NSMatchingRequiredEnd            = 1 << 3, //当前匹配到的字符串在匹配范围的末尾时被设置     
       NSMatchingInternalError          = 1 << 4  //由于错误导致的匹配失败时被设置   
    };
    
    +(NSInteger)checkIsHaveNumAndLetter:(NSString*)aString{
        //数字条件  (NSRegularExpressionCaseInsensitive :不区分大小写)
        NSRegularExpression *tNumRegularExpression = [NSRegularExpression regularExpressionWithPattern:@"[0-9]" options:NSRegularExpressionCaseInsensitive error:nil];
    
       这个方法是iOS中的正则表达式的方法。表示0-9的条件。并且不区分大小写。
    
        //符合数字条件的有几个字节
        NSUInteger tNumMatchCount = [tNumRegularExpression numberOfMatchesInString:aString
                                                                           options:NSMatchingReportProgress
                                                                             range:NSMakeRange(0, aString.length)];
       这个方法表示匹配上面的条件的 总计有几个字节。 下面的方法都同理。
    
    
        //英文字条件
        NSRegularExpression *tLetterRegularExpression = [NSRegularExpression regularExpressionWithPattern:@"[A-Za-z]" options:NSRegularExpressionCaseInsensitive error:nil];
        
        //符合英文字条件的有几个字节
        NSUInteger tLetterMatchCount = [tLetterRegularExpression numberOfMatchesInString:aString options:NSMatchingReportProgress range:NSMakeRange(0, aString.length)];
        
        if (tNumMatchCount == aString.length) {
            //全部符合数字,表示沒有英文
            return NumberType;
        } else if (tLetterMatchCount == aString.length) {
            //全部符合英文,表示沒有数字
            return EnglishType;
        } else if (tNumMatchCount + tLetterMatchCount == aString.length) {
            //符合英文和符合数字条件的相加等于密码长度
            return EnglishAndNumberType;
        } else {
            return OtherType;
            //可能包含标点符号的情況,或是包含非英文的文字,这里再依照需求详细判断想呈现的错误
        }
        
    }
    

    相关文章

      网友评论

        本文标题:UI小方法:给文字加粗和检测输入的是否为纯数字

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