值得收藏的iOS开发常用代码块

2025-05-29 0 71

遍历可变数组的同时删除数组元素

?

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

}

}

}

}

小伙伴们,今天就分享到这里,下期更精彩!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 值得收藏的iOS开发常用代码块 https://www.kuaiidc.com/92377.html

相关文章

发表评论
暂无评论