[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];

 

posted @   EverNight  阅读(704)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示