[iOS]拾遗补阙
一、AFNetworking POST纯字符串
修改位置AFURLRequestSerialization
修改前
NSString * AFQueryStringFromParameters(NSDictionary *parameters) { NSMutableArray *mutablePairs = [NSMutableArray array]; for (AFQueryStringPair *pair in AFQueryStringPairsFromDictionary(parameters)) { [mutablePairs addObject:[pair URLEncodedStringValue]]; } return [mutablePairs componentsJoinedByString:@"&"]; }
修改后
NSString * AFQueryStringFromParameters(NSDictionary *parameters) { if ([parameters isKindOfClass:[NSString class]]) return (NSString *)parameters; NSMutableArray *mutablePairs = [NSMutableArray array]; for (AFQueryStringPair *pair in AFQueryStringPairsFromDictionary(parameters)) { [mutablePairs addObject:[pair URLEncodedStringValue]]; } return [mutablePairs componentsJoinedByString:@"&"]; }
二、查找一个字符串中的多个相同子字符串
NSString *str = @"14 28 62 24 3 46 99 73 10 51 0 95 34 58 50 33 56 23 97 82 83 8 94 1 17 7 19 96 9 54"; NSString *searchString = @"1"; NSRange searchRange = NSMakeRange(0, [str length]); NSRange range; while ((range = [str rangeOfString:searchString options:0 range:searchRange]).location != NSNotFound) { NSLog(@"%@",NSStringFromRange(range)); searchRange = NSMakeRange(NSMaxRange(range), [str length] - NSMaxRange(range)); }
三、UITextField限制字数
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSInteger existedLength = textField.text.length; NSInteger selectedLength = range.length; NSInteger replaceLength = string.length; if (existedLength - selectedLength + replaceLength > 4) return NO; return YES; }
四、枚举数组元素
[array enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { }];
五、为UILabel添加图片
NSTextAttachment *attachment = [[NSTextAttachment alloc] init]; attachment.image = [UIImage imageNamed:@"image"]; attachment.bounds = CGRectMake(0, 0, 15, 15); NSMutableAttributedString *string = [[NSMutableAttributedString alloc] init]; [string appendAttributedString:[NSAttributedString attributedStringWithAttachment:attachment]]; [string appendAttributedString:[[NSAttributedString alloc] initWithString:@"string"]]; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 100, 30)]; label.attributedText = string; [self.view addSubview:label];
六、自适应屏幕大小
view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
七、判断推送是否打开
BOOL registered = [[UIApplication sharedApplication] isRegisteredForRemoteNotifications];
八、UIView转UIImage
- (UIImage *)viewToImage:(UIView *)view { UIImage *image = [[UIImage alloc] init]; UIGraphicsBeginImageContextWithOptions(view.frame.size, YES, [UIScreen mainScreen].scale);// 区域 透明 屏幕密度 [view.layer renderInContext:UIGraphicsGetCurrentContext()]; image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image; }
九、跳转App Store
NSURL *url = [NSURL URLWithString:@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=xxx"]; [[UIApplication sharedApplication] openURL:url];
十、UIButton垂直布局
[button setTitleEdgeInsets:UIEdgeInsetsMake(40 ,-button.imageView.frame.size.width, 0, 0)]; [button setImageEdgeInsets:UIEdgeInsetsMake(-20, 0, 0, -button.titleLabel.bounds.size.width)];
十一、解决UITableView在无导航栏时顶部留白
if (@available(iOS 11.0, *)) self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; else self.automaticallyAdjustsScrollViewInsets = NO;
十二、SDWebImage支持中文路径
[image sd_setImageWithURL:[NSURL URLWithString:[url stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]] forState:UIControlStateNormal];