热门搜索 :
考研考公
您的当前位置:首页正文

iOS Tips 2

来源:东饰资讯网
1. 金额字符串显示

对于表示金额类的字符串,通常需要进行格式化后再显示出来。
0 显示为:0.00
123 显示为:123.00
123.456 显示为:123.46
102000 显示为:102,000.00
10204500 显示为:10,204,500.00
处理方法

- (NSString *)formatDecimalNumber:(NSString *)string{
    if (!string || string.length == 0) {
        return string;
    }
    NSNumber *number = @([string doubleValue]);
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init ];
    formatter.numberStyle = kCFNumberFormatterDecimalStyle;
    //如果不想在数字间加逗号,可以写成“#0.00”
    formatter.positiveFormat = @"###,##0.00";
    NSString *amountString = [formatter stringFromNumber:number];
    return amountString;
}
2. AlertController 另类实现

当弹窗情况比较复杂时,可以以VC的方式进行布局,用模态的方式呈现出来。

  // 弹窗show出来
 [self presentViewController:alertController animated:NO completion:nil];

 //这两个都可以实现底层透明
 UIModalPresentationOverFullScreen NS_ENUM_AVAILABLE_IOS(8_0),
 UIModalPresentationOverCurrentContext NS_ENUM_AVAILABLE_IOS(8_0),

 alertController.modalPresentationStyle = UIModalPresentationOverCurrentContext;
    return alertController;

3. 数组相关

数组交集,并集,差集

NSArray *array1 = @[@"1",@"2",@"3"];
NSArray *array2 = @[@"1",@"5",@"6"]; 
NSMutableSet *set1 = [NSMutableSet setWithArray:array1];
NSMutableSet *set2 = [NSMutableSet setWithArray:array2]; 
 
[set1 unionSet:set2];       //取并集后 set1中为1,2,3,5,6
[set1 intersectSet:set2];  //取交集后 set1中为1
[set1 minusSet:set2];      //取差集后 set1中为2,3,5,6

判断一个数组是否为另一个数组的子集

NSArray *array3 = @[@"1",@"2"];
NSArray *array4 = @[@"1",@"2",@"6"];
NSSet *set3 = [NSSet setWithArray:array3];
NSSet *set4 = [NSSet setWithArray:array4];
BOOL isSub = [set3 isSubsetOfSet:set4];     //isSub为YES

判断某个对象是否在某个数组中

BOOL isExist = [array3 containsObject:@"1"]; //isExist为YES

将字符串分割成数组,可以用字符或字符集分割

string = @"This is the test string for %a*b*c&";
NSArray *divArr = [testString componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"abc"]];
NSLog(@"%@",divArr);

遍历字符串1

[fileStr enumerateSubstringsInRange:NSMakeRange(0, fileStr.length) 
                            options:NSStringEnumerationByWords 
                         usingBlock:^(NSString * _Nullable substring, NSRange substringRange, NSRange enclosingRange, BOOL * _Nonnull stop) {
        NSLog(@"tmp111===%@",substring);
]

遍历数组2

  dispatch_async(dispatch_get_global_queue(0, 0), ^{
        
        dispatch_apply(arr.count, dispatch_get_global_queue(0, 0), ^(size_t index) {
            NSLog(@"%@",arr[index]);
            NSLog(@"%@",[NSString stringWithFormat:@"fuck%@",arr[index]]);
            

        });
        dispatch_async(dispatch_get_main_queue(), ^{
            NSLog(@"over");

        });
    });
4. 加载本地 html 文件
//WKWebView 加载
NSURL *url =  [[NSBundle mainBundle] URLForResource:@"index.html" withExtension:nil];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: url];
request.cachePolicy = NSURLRequestReturnCacheDataElseLoad;
5. 查看 APP 的 Library tmp 和 Document 文件
下载后也可以查看日志
5. UIButton 的样式设置
//首先必须先调用这两个方法titleEdgeInsets,imageEdgeInsets
[_btn setTitle:@"测试" forState:UIControlStateNormal];
[_btn setImage:[UIImage imageNamed:@"tig.jpeg"] forState:UIControlStateNormal];
 
//必须确定 Button 的Frame
   
 //示例1. 调整间距为10,默认全都为0
 _btn.titleEdgeInsets 
=UIEdgeInsetsMake(0,  KPading/2, 0, -KPading/2);

 _btn.imageEdgeInsets 
= UIEdgeInsetsMake(0, -KPading/2, 0, KPading/2);


//示例2. 间距为10,左右互换位置
_btn.titleEdgeInsets =UIEdgeInsetsMake(0,_btn.imageView.frame.size.width -KPading/2,
                                       0, _btn.imageView.frame.size.width +KPading/2);

_btn.imageEdgeInsets = UIEdgeInsetsMake(0, _btn.titleLabel.frame.size.width+KPading/2,
                                        0,-_btn.titleLabel.frame.size.width-KPading/2);
    
示例1
示例2
6. UIButton点击无效

使用xib制作界面有时会出现button无法点击,解决办法

在自定义的view文件中复制如下代码

-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
   UIView *result = [super hitTest:point withEvent:event];

   CGPoint buttonPoint2 = [self.Button convertPoint:point fromView:self];

   if ([self.Button pointInside:buttonPoint2 withEvent:event]) {

     return self.Button;

   }
   return result;
}
Top