iOS开发中的一些常用方法
来源:互联网 发布:w7系统修复软件 编辑:程序博客网 时间:2024/05/17 05:52
1. 判断手机号码格式是否正确,利用正则表达式验证
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
+ (BOOL)isMobileNumber:(NSString *)mobileNum
{
if
(mobileNum.length != 11)
{
return
NO;
}
/**
* 手机号码:
* 13[0-9], 14[5,7], 15[0, 1, 2, 3, 5, 6, 7, 8, 9], 17[6, 7, 8], 18[0-9], 170[0-9]
* 移动号段: 134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705
* 联通号段: 130,131,132,155,156,185,186,145,176,1709
* 电信号段: 133,153,180,181,189,177,1700
*/
NSString *MOBILE = @
"^1(3[0-9]|4[57]|5[0-35-9]|8[0-9]|70)\d{8}$"
;
/**
* 中国移动:China Mobile
* 134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705
*/
NSString *CM = @
"(^1(3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])\d{8}$)|(^1705\d{7}$)"
;
/**
* 中国联通:China Unicom
* 130,131,132,155,156,185,186,145,176,1709
*/
NSString *CU = @
"(^1(3[0-2]|4[5]|5[56]|7[6]|8[56])\d{8}$)|(^1709\d{7}$)"
;
/**
* 中国电信:China Telecom
* 133,153,180,181,189,177,1700
*/
NSString *CT = @
"(^1(33|53|77|8[019])\d{8}$)|(^1700\d{7}$)"
;
NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@
"SELF MATCHES %@"
, MOBILE];
NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@
"SELF MATCHES %@"
, CM];
NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@
"SELF MATCHES %@"
, CU];
NSPredicate *regextestct = [NSPredicate predicateWithFormat:@
"SELF MATCHES %@"
, CT];
if
(([regextestmobile evaluateWithObject:mobileNum] == YES)
|| ([regextestcm evaluateWithObject:mobileNum] == YES)
|| ([regextestct evaluateWithObject:mobileNum] == YES)
|| ([regextestcu evaluateWithObject:mobileNum] == YES))
{
return
YES;
}
else
{
return
NO;
}
}
2. 判断邮箱格式是否正确,利用正则表达式验证
1
2
3
4
5
6
+ (BOOL)isAvailableEmail:(NSString *)email
{
NSString *emailRegex = @
"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}"
;
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@
"SELF MATCHES %@"
, emailRegex];
return
[emailTest evaluateWithObject:email];
}
3. 判断字符串中是否含有空格
1
2
3
4
5
6
7
8
+ (BOOL)isHaveSpaceInString:(NSString *)string{
NSRange _range = [string rangeOfString:@
" "
];
if
(_range.location != NSNotFound) {
return
YES;
}
else
{
return
NO;
}
}
4. 判断字符串中是否含有中文
1
2
3
4
5
6
7
8
9
10
+ (BOOL)isHaveChineseInString:(NSString *)string
{
for
(NSInteger i = 0; i < [string length]; i++){
int a = [string characterAtIndex:i];
if
(a > 0x4e00 && a < 0x9fff) {
return
YES;
}
}
return
NO;
}
5. 判断字符串是否全部为数字
+ (BOOL)isAllNum:(NSString *)string
{
unichar c;
for
(int i=0; i<string.length; i++) { c=
"[string characterAtIndex:i];"
if
(!isdigit(c)) {=
""
return
no;=
""
}=
""
}=
""
return
yes;=
""
}<=
""
pre=
""
><p>判断是否是纯数字</p><pre class=
"brush:js;toolbar:false"
>+ (BOOL)isPureInteger:(NSString *)str {
NSScanner *scanner = [NSScanner scannerWithString:str];
NSInteger val;
return
[scanner scanInteger:&val] && [scanner isAtEnd];
}
6. 过滤一些特殊字符 似乎只能去除头尾的特殊字符(不准)
+ (NSString *)filterSpecialWithString:(NSString *)string
{
// 定义一个特殊字符的集合
NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:
@
"@/:;: ;()?「」"、[]{}#%-*+=_|~<>$?^?'@#$%^&*()_+'"
];
// 过滤字符串的特殊字符
NSString *newString = [string stringByTrimmingCharactersInSet:set];
return
newString;
}
7. 让iOS应用直接退出
+ (void)backOutApp {
UIWindow *window = [[UIApplication sharedApplication].delegate window];
[UIView animateWithDuration:1.0f animations:^{
window.alpha = 0;
} completion:^(BOOL finished) {
exit(0);
}];
}
8. NSArray 快速求总和、最大值、最小值、平均值
+ (NSString *)caculateArray:(NSArray *)array
{
CGFloat sum = [[array valueForKeyPath:@
"@sum.floatValue"
] floatValue];
CGFloat avg = [[array valueForKeyPath:@
"@avg.floatValue"
] floatValue];
CGFloat max =[[array valueForKeyPath:@
"@max.floatValue"
] floatValue];
CGFloat min =[[array valueForKeyPath:@
"@min.floatValue"
] floatValue];
NSLog(@
"%fn%fn%fn%f"
,sum,avg,max,min);
return
[NSString stringWithFormat:@
"%f"
,sum];
}
9. 验证身份证(本人试过,还挺准的)
+ (BOOL)checkIdentityCardNo:(NSString*)value {
value = [value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSInteger length =0;
if
(!value) {
return
NO;
}
else
{
length = value.length;
if
(length !=15 && length !=18) {
return
NO;
}
}
// 省份代码
NSArray *areasArray =@[@
"11"
,@
"12"
, @
"13"
,@
"14"
, @
"15"
,@
"21"
, @
"22"
,@
"23"
, @
"31"
,@
"32"
, @
"33"
,@
"34"
, @
"35"
,@
"36"
, @
"37"
,@
"41"
, @
"42"
,@
"43"
, @
"44"
,@
"45"
, @
"46"
,@
"50"
, @
"51"
,@
"52"
, @
"53"
,@
"54"
, @
"61"
,@
"62"
, @
"63"
,@
"64"
, @
"65"
,@
"71"
, @
"81"
,@
"82"
, @
"91"
];
NSString *valueStart2 = [value substringToIndex:2];
BOOL areaFlag =NO;
for
(NSString *areaCode
in
areasArray) {
if
([areaCode isEqualToString:valueStart2]) {
areaFlag =YES;
break
;
}
}
if
(!areaFlag) {
return
false
;
}
NSRegularExpression *regularExpression;
NSUInteger numberofMatch;
NSInteger year =0;
switch
(length) {
case
15:
year = [[value substringWithRange:NSMakeRange(6,2)] integerValue] +1900;
if
(year %4 ==0 || (year 0 ==0 && year %4 ==0)) {
regularExpression = [[NSRegularExpression alloc]initWithPattern:@
"^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$"
options:NSRegularExpressionCaseInsensitive
error:nil];
//测试出生日期的合法性
}
else
{
regularExpression = [[NSRegularExpression alloc]initWithPattern:@
"^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$"
options:NSRegularExpressionCaseInsensitive
error:nil];
//测试出生日期的合法性
}
numberofMatch = [regularExpression numberOfMatchesInString:value options:NSMatchingReportProgress
range:NSMakeRange(0, value.length)];
if
(numberofMatch >0) {
return
YES;
}
else
{
return
NO;
}
case
18:
year = [value substringWithRange:NSMakeRange(6,4)].intValue;
if
(year %4 ==0 || (year 0 ==0 && year %4 ==0)) {
regularExpression = [[NSRegularExpression alloc]initWithPattern:@
"^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$"
options:NSRegularExpressionCaseInsensitive error:nil];
//测试出生日期的合法性
}
else
{
regularExpression = [[NSRegularExpression alloc]initWithPattern:@
"^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$"
options:NSRegularExpressionCaseInsensitive error:nil];
//测试出生日期的合法性
}
numberofMatch = [regularExpression numberOfMatchesInString:value options:NSMatchingReportProgress range:NSMakeRange(0, value.length)];
if
(numberofMatch >0) {
int S = ([value substringWithRange:NSMakeRange(0,1)].intValue + [value substringWithRange:NSMakeRange(10,1)].intValue) *7 + ([value substringWithRange:NSMakeRange(1,1)].intValue + [value substringWithRange:NSMakeRange(11,1)].intValue) *9 + ([value substringWithRange:NSMakeRange(2,1)].intValue + [value substringWithRange:NSMakeRange(12,1)].intValue) *10 + ([value substringWithRange:NSMakeRange(3,1)].intValue + [value substringWithRange:NSMakeRange(13,1)].intValue) *5 + ([value substringWithRange:NSMakeRange(4,1)].intValue + [value substringWithRange:NSMakeRange(14,1)].intValue) *8 + ([value substringWithRange:NSMakeRange(5,1)].intValue + [value substringWithRange:NSMakeRange(15,1)].intValue) *4 + ([value substringWithRange:NSMakeRange(6,1)].intValue + [value substringWithRange:NSMakeRange(16,1)].intValue) *2 + [value substringWithRange:NSMakeRange(7,1)].intValue *1 + [value substringWithRange:NSMakeRange(8,1)].intValue *6 + [value substringWithRange:NSMakeRange(9,1)].intValue *3;
int Y = S ;
NSString *M =@
"F"
;
NSString *JYM =@
"10X98765432"
;
M = [JYM substringWithRange:NSMakeRange(Y,1)];
// 判断校验位
if
([M isEqualToString:[value substringWithRange:NSMakeRange(17,1)]]) {
return
YES;
// 检测ID的校验位
}
else
{
return
NO;
}
}
else
{
return
NO;
}
default
:
return
false
;
}
}
10. 设置Label里的字符有不同的颜色
//可根据自己的需求进行增删改
- (void)stringColorSet {
NSString*string = @
"如何使得Label里的字符有不同的颜色?"
;
NSRange range = [string rangeOfString: @
"Label"
];
NSMutableAttributedString*attribute = [[NSMutableAttributedString alloc] initWithString: string];
[attribute addAttributes: @{NSForegroundColorAttributeName: [UIColor redColor]}range: range];
[attribute addAttributes: @{NSForegroundColorAttributeName: [UIColor greenColor]}range: NSMakeRange(0, range.location)];
[attribute addAttributes: @{NSForegroundColorAttributeName: [UIColor cyanColor]}range: NSMakeRange(range.location+ range.length, 5)];
UILabel *label = [[UILabel alloc] initWithFrame: CGRectMake(0.0f, 100.0f, 320.0f, 100.0f)];
[label setText: string];
[label setAttributedText: attribute];
}
1.磁盘总空间大小
+ (CGFloat)diskOfAllSizeMBytes
{
CGFloat size = 0.0;
NSError *error;
NSDictionary *dic = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&error];
if
(error) {
#ifdef DEBUG
NSLog(@
"error: %@"
, error.localizedDescription);
#endif
}
else
{
NSNumber *number = [dic objectForKey:NSFileSystemSize];
size = [number floatValue]/1024/1024;
}
return
size;
}
2.磁盘可用空间大小
+ (CGFloat)diskOfFreeSizeMBytes
{
CGFloat size = 0.0;
NSError *error;
NSDictionary *dic = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&error];
if
(error) {
#ifdef DEBUG
NSLog(@
"error: %@"
, error.localizedDescription);
#endif
}
else
{
NSNumber *number = [dic objectForKey:NSFileSystemFreeSize];
size = [number floatValue]/1024/1024;
}
return
size;
}
3.将字符串数组按照元素首字母顺序进行排序分组
+ (NSDictionary *)dictionaryOrderByCharacterWithOriginalArray:(NSArray *)array
{
if
(array.count == 0) {
return
nil;
}
for
(id obj in array) {
if
(![obj isKindOfClass:[NSString
class
]]) {
return
nil;
}
}
UILocalizedIndexedCollation *indexedCollation = [UILocalizedIndexedCollation currentCollation];
NSMutableArray *objects = [NSMutableArray arrayWithCapacity:indexedCollation.sectionTitles.count];
//创建27个分组数组
for
(
int
i = 0; i < indexedCollation.sectionTitles.count; i++) {
NSMutableArray *obj = [NSMutableArray array];
[objects addObject:obj];
}
NSMutableArray *keys = [NSMutableArray arrayWithCapacity:objects.count];
//按字母顺序进行分组
NSInteger lastIndex = -1;
for
(
int
i = 0; i < array.count; i++) {
NSInteger index = [indexedCollation sectionForObject:array[i] collationStringSelector:@selector(uppercaseString)];
[[objects objectAtIndex:index] addObject:array[i]];
lastIndex = index;
}
//去掉空数组
for
(
int
i = 0; i < objects.count; i++) {
NSMutableArray *obj = objects[i];
if
(obj.count == 0) {
[objects removeObject:obj];
}
}
//获取索引字母
for
(NSMutableArray *obj in objects) {
NSString *str = obj[0];
NSString *key = [self firstCharacterWithString:str];
[keys addObject:key];
}
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setObject:objects forKey:keys];
return
dic;
}
4.将字符串数组按照元素首字母顺序进行排序分组
+ (NSDictionary *)dictionaryOrderByCharacterWithOriginalArray:(NSArray *)array
{
if
(array.count == 0) {
return
nil;
}
for
(id obj in array) {
if
(![obj isKindOfClass:[NSString
class
]]) {
return
nil;
}
}
UILocalizedIndexedCollation *indexedCollation = [UILocalizedIndexedCollation currentCollation];
NSMutableArray *objects = [NSMutableArray arrayWithCapacity:indexedCollation.sectionTitles.count];
//创建27个分组数组
for
(
int
i = 0; i < indexedCollation.sectionTitles.count; i++) {
NSMutableArray *obj = [NSMutableArray array];
[objects addObject:obj];
}
NSMutableArray *keys = [NSMutableArray arrayWithCapacity:objects.count];
//按字母顺序进行分组
NSInteger lastIndex = -1;
for
(
int
i = 0; i < array.count; i++) {
NSInteger index = [indexedCollation sectionForObject:array[i] collationStringSelector:@selector(uppercaseString)];
[[objects objectAtIndex:index] addObject:array[i]];
lastIndex = index;
}
//去掉空数组
for
(
int
i = 0; i < objects.count; i++) {
NSMutableArray *obj = objects[i];
if
(obj.count == 0) {
[objects removeObject:obj];
}
}
//获取索引字母
for
(NSMutableArray *obj in objects) {
NSString *str = obj[0];
NSString *key = [self firstCharacterWithString:str];
[keys addObject:key];
}
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setObject:objects forKey:keys];
return
dic;
}
5.对图片进行滤镜处理
// 怀旧 --> CIPhotoEffectInstant 单色 --> CIPhotoEffectMono
// 黑白 --> CIPhotoEffectNoir 褪色 --> CIPhotoEffectFade
// 色调 --> CIPhotoEffectTonal 冲印 --> CIPhotoEffectProcess
// 岁月 --> CIPhotoEffectTransfer 铬黄 --> CIPhotoEffectChrome
// CILinearToSRGBToneCurve, CISRGBToneCurveToLinear, CIGaussianBlur, CIBoxBlur, CIDiscBlur, CISepiaTone, CIDepthOfField
+ (UIImage *)filterWithOriginalImage:(UIImage *)image filterName:(NSString *)name
{
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *inputImage = [[CIImage alloc] initWithImage:image];
CIFilter *filter = [CIFilter filterWithName:name];
[filter setValue:inputImage forKey:kCIInputImageKey];
CIImage *result = [filter valueForKey:kCIOutputImageKey];
CGImageRef cgImage = [context createCGImage:result fromRect:[result extent]];
UIImage *resultImage = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
return
resultImage;
}
6.对图片进行模糊处理
// CIGaussianBlur ---> 高斯模糊
// CIBoxBlur ---> 均值模糊(Available in iOS 9.0 and later)
// CIDiscBlur ---> 环形卷积模糊(Available in iOS 9.0 and later)
// CIMedianFilter ---> 中值模糊, 用于消除图像噪点, 无需设置radius(Available in iOS 9.0 and later)
// CIMotionBlur ---> 运动模糊, 用于模拟相机移动拍摄时的扫尾效果(Available in iOS 9.0 and later)
+ (UIImage *)blurWithOriginalImage:(UIImage *)image
blurName:(NSString *)name
radius:(NSInteger)radius
{
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *inputImage = [[CIImage alloc] initWithImage:image];
CIFilter *filter;
if
(name.length != 0) {
filter = [CIFilter filterWithName:name];
[filter setValue:inputImage forKey:kCIInputImageKey];
if
(![name isEqualToString:@
"CIMedianFilter"
]) {
[filter setValue:@(radius) forKey:@
"inputRadius"
];
}
CIImage *result = [filter valueForKey:kCIOutputImageKey];
CGImageRef cgImage = [context createCGImage:result fromRect:[result extent]];
UIImage *resultImage = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
return
resultImage;
}
else
{
return
nil;
}
}
7.跳转到系统的相关界面:
/*
* 需要添加一个字段
* 蓝色的项目工程文件 -> Info -> URL Types -> 添加一个 -> 设置URL Sch**** 为 prefs的url
NSURL *url = [NSURL URLWithString:@"prefs:root=WIFI"];
[[UIApplication sharedApplication] openURL:url];
跳转到其他的界面的字段(不全,详细看链接)
About — prefs:root=General&path=About
Accessibility — prefs:root=General&path=ACCESSIBILITY
AirplaneModeOn— prefs:root=AIRPLANE_MODE
Auto-Lock — prefs:root=General&path=AUTOLOCK
Brightness — prefs:root=Brightness
Bluetooth — prefs:root=General&path=Bluetooth
Date& Time — prefs:root=General&path=DATE_AND_TIME
FaceTime — prefs:root=FACETIME
General— prefs:root=General
原文链接:http://www.jianshu.com/p/19602f48309b
*/
8.创建一张实时模糊效果 View (毛玻璃效果)
//Avilable in iOS 8.0 and later
+ (UIVisualEffectView *)effectViewWithFrame:(CGRect)frame
{
UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:effect];
effectView.frame = frame;
return
effectView;
}
9.设置Label的行间距
+ (
void
)setLineSpaceWithString:(UILabel *)label
{
NSMutableAttributedString *attributedString =
[[NSMutableAttributedString alloc] initWithString:label.text];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:3];
//调整行间距
[attributedString addAttribute:NSParagraphStyleAttributeName
value:paragraphStyle
range:NSMakeRange(0, [label.text length])];
label.attributedText = attributedString;
}
10.让Plain风格的TableView的区头可以”不悬停”(可以直接百度搜到):
- (
void
)scrollViewDidScroll:(UIScrollView *)scrollView
{
if
(scrollView == self.myTab) {
CGFloat sectionHeaderHeight = 40;
if
(scrollView.contentOffset.y=0) {
scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
}
else
if
(scrollView.contentOffset.y>=sectionHeaderHeight) {
scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0);
}
}
}
0 0
- iOS开发中的一些常用方法
- iOS开发中的一些常用方法
- iOS开发中的一些常用方法
- iOS开发中的一些常用方法
- iOS开发中的一些常用方法
- iOS开发中的一些常用方法(一)
- iOS开发中的一些常用方法(二)
- iOS开发中的一些常用小技巧
- iOS开发中的一些常用小技巧
- iOS开发中一些常用的方法
- iOS 开发 一些常用的公共方法
- iOS开发 GCD一些常用的方法
- Android开发中的一些常用方法
- IOS 开发中的一些实用公共方法
- iOS 开发中一些常用到的代码/方法总结
- iOS常用的一些方法
- ios开发适合放在.pch文件中的常用方法
- VC中的一些常用方法
- ubuntu Mysql 密码修改
- Android Menu
- QtCreator输出信息到控制台
- LoadRunner字符串编码转换的函数lr_convert_string_encoding
- 18. 请写一个函数验证电子邮件的格式是否正确 (2分)
- iOS开发中的一些常用方法
- Flash地位江河日下HTML5成为未来发展主旋律
- 开发者必读:13种方式帮助你提升App性能
- mtk preloader源码简析
- git命令
- 对于新安装的MySQL如何提升MySQL的安全级别
- WEBRTC音视频接收(从网络接收RTP包到组帧)
- UcosIII基本介绍
- Android MPChart具体方法介绍