遍历可变数组的同时删除数组元素
1
2
3
4
5
6
7
|
NSMutableArray *copyArray = [NSMutableArray arrayWithArray:array]; NSString *str1 = @“zhangsan”; for (AddressPerson *perName in copyArray) { if ([[perName name] isEqualToString:str1]) { [array removeObject:perName]; } } |
获取系统当前语言
1
2
3
4
5
6
7
8
|
NSString *currentLanguage = [[NSLocale preferredLanguages] objectAtIndex:0]; NSLog(@ "currentlanguage = %@" ,currentLanguage); if ([currentLanguage containsString:@ "zh-Hans" ]) { NSLog(@ "zh-Hans简体中文" ); } else if ([currentLanguage containsString:@ "zh-Hant" ]) { NSLog(@ "zh-Hant繁体中文" ); } |
UITableView的Group样式下顶部空白处理
1
2
|
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0.1)]; self.tableView.tableHeaderView = view; |
UITableView的plain样式下,取消区头停滞效果
1
2
3
4
5
6
7
8
9
10
11
12
|
- ( void )scrollViewDidScroll:(UIScrollView *)scrollView { CGFloat sectionHeaderHeight = sectionHead.height; if (scrollView.contentOffset.y<=sectionHeaderHeight&&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); } } |
获取某个view所在的控制器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
- (UIViewController *)viewController { UIViewController *viewController = nil; UIResponder *next = self.nextResponder; while (next) { if ([next isKindOfClass:[UIViewController class ]]) { viewController = (UIViewController *)next; break ; } next = next.nextResponder; } return viewController; } |
两种方法删除NSUserDefaults所有记录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
//方法一 NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier]; [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain]; //方法二 - ( void )resetDefaults { NSUserDefaults * defs = [NSUserDefaults standardUserDefaults]; NSDictionary * dict = [defs dictionaryRepresentation]; for (id key in dict) { [defs removeObjectForKey:key]; } [defs synchronize]; } |
打印系统所有已注册的字体名称
1
2
3
4
5
6
7
8
9
10
11
12
|
void enumerateFonts() { for (NSString *familyName in [UIFont familyNames]) { NSLog(@ "%@" ,familyName); NSArray *fontNames = [UIFont fontNamesForFamilyName:familyName]; for (NSString *fontName in fontNames) { NSLog(@ "\t|- %@" ,fontName); } } } |
获取图片某一点的颜色
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
|
- (UIColor*) getPixelColorAtLocation:(CGPoint)point inImage:(UIImage *)image { UIColor* color = nil; CGImageRef inImage = image.CGImage; CGContextRef cgctx = [self createARGBBitmapContextFromImage:inImage]; if (cgctx == NULL) { return nil; /* error */ } size_t w = CGImageGetWidth(inImage); size_t h = CGImageGetHeight(inImage); CGRect rect = {{0,0},{w,h}}; CGContextDrawImage(cgctx, rect, inImage); unsigned char * data = CGBitmapContextGetData (cgctx); if (data != NULL) { int offset = 4*((w*round(point.y))+round(point.x)); int alpha = data[offset]; int red = data[offset+1]; int green = data[offset+2]; int blue = data[offset+3]; color = [UIColor colorWithRed:(red/255.0f) green:(green/255.0f) blue: (blue/255.0f) alpha:(alpha/255.0f)]; } CGContextRelease(cgctx); if (data) { free (data); } return color; } |
字符串反转
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
//第一种: - (NSString *)reverseWordsInString:(NSString *)str { NSMutableString *newString = [[NSMutableString alloc] initWithCapacity:str.length]; for (NSInteger i = str.length - 1; i >= 0 ; i --) { unichar ch = [str characterAtIndex:i]; [newString appendFormat:@ "%c" , ch]; } return newString; } //第二种: - (NSString*)reverseWordsInString:(NSString*)str { NSMutableString *reverString = [NSMutableString stringWithCapacity:str.length]; [str enumerateSubstringsInRange:NSMakeRange(0, str.length) options:NSStringEnumerationReverse | NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) { [reverString appendString:substring]; }]; return reverString; } |
禁止锁屏
1
2
3
4
|
//第一种 [UIApplication sharedApplication].idleTimerDisabled = YES; //第二种 [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; |
模态推出透明界面
1
2
3
4
5
6
7
8
9
10
11
12
13
|
UIViewController *vc = [[UIViewController alloc] init]; UINavigationController *na = [[UINavigationController alloc] initWithRootViewController:vc]; if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) { na.modalPresentationStyle = UIModalPresentationOverCurrentContext; } else { self.modalPresentationStyle=UIModalPresentationCurrentContext; } [self presentViewController:na animated:YES completion:nil]; |
iOS跳转到App Store下载应用评分
1
|
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@ "itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=APPID" ]]; |
手动更改iOS状态栏的颜色
1
2
3
4
5
6
7
8
9
|
- ( void )setStatusBarBackgroundColor:(UIColor *)color { UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@ "statusBarWindow" ] valueForKey:@ "statusBar" ]; if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) { statusBar.backgroundColor = color; } } |
判断当前ViewController是push还是present的方式显示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
NSArray *viewcontrollers=self.navigationController.viewControllers; if (viewcontrollers.count > 1) { if ([viewcontrollers objectAtIndex:viewcontrollers.count - 1] == self) { //push方式 [self.navigationController popViewControllerAnimated:YES]; } } else { //present方式 [self dismissViewControllerAnimated:YES completion:nil]; } |
获取实际使用的LaunchImage图片
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
- (NSString *)getLaunchImageName { CGSize viewSize = self.window.bounds.size; // 竖屏 NSString *viewOrientation = @ "Portrait" ; NSString *launchImageName = nil; NSArray* imagesDict = [[[NSBundle mainBundle] infoDictionary] valueForKey:@ "UILaunchImages" ]; for (NSDictionary* dict in imagesDict) { CGSize imageSize = CGSizeFromString(dict[@ "UILaunchImageSize" ]); if (CGSizeEqualToSize(imageSize, viewSize) && [viewOrientation isEqualToString:dict[@ "UILaunchImageOrientation" ]]) { launchImageName = dict[@ "UILaunchImageName" ]; } } return launchImageName; } |
iOS在当前屏幕获取第一响应
1
2
|
UIWindow * keyWindow = [[UIApplication sharedApplication] keyWindow]; UIView * firstResponder = [keyWindow performSelector:@selector(firstResponder)]; |
判断对象是否遵循了某协议
1
2
3
4
|
if ([self.selectedController conformsToProtocol:@protocol(RefreshPtotocol)]) { [self.selectedController performSelector:@selector(onTriggerRefresh)]; } |
判断view是不是指定视图的子视图
BOOL isView = [textView isDescendantOfView:self.view];
NSArray 快速求总和 最大值 最小值 和 平均值
1
2
3
4
5
6
|
NSArray *array = [NSArray arrayWithObjects:@ "2.0" , @ "2.3" , @ "3.0" , @ "4.0" , @ "10" , nil]; 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(@ "%f\n%f\n%f\n%f" ,sum,avg,max,min); |
修改UITextField中Placeholder的文字颜色
[textField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];
获取一个类的所有子类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
+ (NSArray *) allSubclasses { Class myClass = [self class ]; NSMutableArray *mySubclasses = [NSMutableArray array]; unsigned int numOfClasses; Class *classes = objc_copyClassList(&numOfClasses;); for (unsigned int ci = 0; ci < numOfClasses; ci++) { Class superClass = classes[ci]; do { superClass = class_getSuperclass(superClass); } while (superClass && superClass != myClass); if (superClass) { [mySubclasses addObject: classes[ci]]; } } free (classes); return mySubclasses; } |
阿拉伯数字转中文格式
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
|
+(NSString *)translation:(NSString *)arebic { NSString *str = arebic; NSArray *arabic_numerals = @[@ "1" ,@ "2" ,@ "3" ,@ "4" ,@ "5" ,@ "6" ,@ "7" ,@ "8" ,@ "9" ,@ "0" ]; NSArray *chinese_numerals = @[@ "一" ,@ "二" ,@ "三" ,@ "四" ,@ "五" ,@ "六" ,@ "七" ,@ "八" ,@ "九" ,@ "零" ]; NSArray *digits = @[@ "个" ,@ "十" ,@ "百" ,@ "千" ,@ "万" ,@ "十" ,@ "百" ,@ "千" ,@ "亿" ,@ "十" ,@ "百" ,@ "千" ,@ "兆" ]; NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:chinese_numerals forKeys:arabic_numerals]; NSMutableArray *sums = [NSMutableArray array]; for ( int i = 0; i < str.length; i ++) { NSString *substr = [str substringWithRange:NSMakeRange(i, 1)]; NSString *a = [dictionary objectForKey:substr]; NSString *b = digits[str.length -i-1]; NSString *sum = [a stringByAppendingString:b]; if ([a isEqualToString:chinese_numerals[9]]) { if ([b isEqualToString:digits[4]] || [b isEqualToString:digits[8]]) { sum = b; if ([[sums lastObject] isEqualToString:chinese_numerals[9]]) { [sums removeLastObject]; } } else { sum = chinese_numerals[9]; } if ([[sums lastObject] isEqualToString:sum]) { continue ; } } [sums addObject:sum]; } NSString *sumStr = [sums componentsJoinedByString:@ "" ]; NSString *chinese = [sumStr substringToIndex:sumStr.length-1]; NSLog(@ "%@" ,str); NSLog(@ "%@" ,chinese); return chinese; } |
取消UICollectionView的隐式动画
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
//方法一 [UIView performWithoutAnimation:^{ [collectionView reloadItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:index inSection:0]]]; }]; //方法二 [UIView animateWithDuration:0 animations:^{ [collectionView performBatchUpdates:^{ [collectionView reloadItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:index inSection:0]]]; } completion:nil]; }]; //方法三 [UIView setAnimationsEnabled:NO]; [self.trackPanel performBatchUpdates:^{ [collectionView reloadItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:index inSection:0]]]; } completion:^( BOOL finished) { [UIView setAnimationsEnabled:YES]; }]; |
判断邮箱格式是否正确的代码
1
2
3
4
5
6
7
8
9
10
11
|
-( BOOL )isValidateEmail:(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]; } |
iOS中UITextField的字数限制
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
|
//在viewDidLoad中注册<UITextFieldTextDidChangeNotification>通知 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFiledEditChanged:) name:@ "UITextFieldTextDidChangeNotification" object:myTextField]; //实现监听方法 #pragma mark - Notification Method -( void )textFieldEditChanged:(NSNotification *)obj { UITextField *textField = (UITextField *)obj.object; NSString *toBeString = textField.text; //获取高亮部分 UITextRange *selectedRange = [textField markedTextRange]; UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0]; // 没有高亮选择的字,则对已输入的文字进行字数统计和限制 if (!position) { if (toBeString.length > MAX_STARWORDS_LENGTH) { NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH]; if (rangeIndex.length == 1) { textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH]; } else { NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)]; textField.text = [toBeString substringWithRange:rangeRange]; } } } } |
小伙伴们,今天就分享到这里,下期更精彩!