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;
}