美文网首页
iOS 代码碎片

iOS 代码碎片

作者: JimmyL | 来源:发表于2021-09-17 16:24 被阅读0次

    1、通过掩码、网关判断ip是否有效

    fileprivate func verfyIpAddressEnable(gateway: String, netmask: String, ipAddr: String) -> Bool {
            func to8Bit(number: NSString) -> String {
                var result = String.init(number.integerValue, radix: 2, uppercase: false)
                while result.count < 8 {
                    result = "0" + result
                }
                return result
            }
    
            let gateList = gateway.split(separator: ".")
            let maskList = netmask.split(separator: ".")
            let ipList = ipAddr.split(separator: ".")
            for index in 0..<gateList.count {
                let gateChar = to8Bit(number: gateList[index] as NSString)
                let maskChar = to8Bit(number: maskList[index] as NSString)
                let ipChar = to8Bit(number: ipList[index] as NSString)
                for j in 0..<8 {
                    let charIndex = gateChar.index(gateChar.startIndex, offsetBy: j)
                    if maskChar[charIndex] == "1" {
                        if gateChar[charIndex] != ipChar[charIndex] {
                            return false
                        }
                    }
                }
            }
            
            return true
        }
    

    2、判断两个数组是否相等,顺序不考虑

    - (BOOL)isTwoArrayEqualWithOneArray:(NSArray *)oneArray otherArray:(NSArray *)otherArray {
        NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"NOT (SELF IN %@)", oneArray];
        NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"NOT (SELF IN %@)", otherArray];
        if (([otherArray filteredArrayUsingPredicate:predicate1].count > 0) || ([oneArray filteredArrayUsingPredicate:predicate2].count > 0)) {
            return NO;
        }
        return YES;
    }
    

    3、判断密码格式是否正确

    • 不能全部是数字
    • 不能全部是字母
    • 必须是数字和字母组合
    • 长度6-16位
    - (BOOL)isPasswordCorrectType:(NSString *)string {
        NSString *regex = @"^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$";
        NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
        return [pred evaluateWithObject:string];
    }
    

    4、设置富文本组合文案

    + (NSAttributedString *)setAttributeStringWithFullText:(NSString *)fullText specialText:(NSArray<NSString *> *)specialTextArray normalFont:(UIFont *)normalFont specialFont:(NSArray <UIFont *> *)specialFont normalColor:(UIColor *)normalColor specialColor:(NSArray<UIColor *> *)specialColor {
        
        NSMutableAttributedString *suctionString = [[NSMutableAttributedString alloc]initWithString:fullText attributes:@{
                                                                                                                          NSFontAttributeName:normalFont,
                                                                                                                          NSForegroundColorAttributeName:normalColor
                                                                                                                          }];
        [specialTextArray enumerateObjectsUsingBlock:^(NSString * _Nonnull specialText, NSUInteger idx, BOOL * _Nonnull stop) {
            if (specialText.length > 0) {
                
                NSRange range1=[[suctionString string]rangeOfString:specialText];
                if (specialFont[idx]) {
                    [suctionString addAttribute:NSFontAttributeName value:specialFont[idx] range:range1];
                }
                if (specialColor[idx]) {
                    [suctionString addAttribute:NSForegroundColorAttributeName value:specialColor[idx] range:range1];
                }
            }
        }];
        return suctionString;
    }
    

    5、输入框clearButton图片替换

    - (void)changeClearButtonTintImageWithTextField:(UITextField *)textField {
        UIButton *clearButton = (UIButton *)[textField valueForKey:@"_clearButton"];
        [clearButton setImage:[UIImage imageNamed:@"clearButton"] forState:UIControlStateNormal];
        [clearButton setImage:[UIImage imageNamed:@"clearButton"] forState:UIControlStateHighlighted];
    }
    

    6、不可粘贴复制的输入框

    新建 UITextField 子类,覆写 -(BOOL)canPerformAction:withSender:

    - (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
        //安全输入模式不能剪切、复制
        if (self.secureTextEntry) {
            if (action == @selector(copy:) || action == @selector(cut:)) {
                return  NO;
            }
        }
        return YES;
    }
    

    相关文章

      网友评论

          本文标题:iOS 代码碎片

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