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

一、给文字设置粗体

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

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

UI小方法:给文字加粗和检测输入的是否为纯数字_第1张图片
字体大全

  • 第二种方法
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小方法:给文字加粗和检测输入的是否为纯数字)