分享一些iOS开发实用的小技巧

2025-05-29 0 53

1.设置navigationbar title颜色

?

1

2

3
UIColor *whiteColor = [UIColor whiteColor];

NSDictionary *dic = [NSDictionary dictionaryWithObject:whiteColor forKey:NSForegroundColorAttributeName];

[self.navigationController.navigationBar setTitleTextAttributes:dic];

2.获取UIColor RGB

?

1

2

3

4

5

6
UIColor *color = [UIColor colorWithRed:0.0 green:0.0 blue:1.0 alpha:1.0];

const CGFloat *components = CGColorGetComponents(color.CGColor);

NSLog(@"Red: %f", components[0]);

NSLog(@"Green: %f", components[1]);

NSLog(@"Blue: %f", components[2]);

NSLog(@"Alpha: %f", components[3]);

3.修改textField的placeholder的字体颜色、大小

?

1

2
[self.textField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];

[self.textField setValue:[UIFont boldSystemFontOfSize:16] forKeyPath:@"_placeholderLabel.font"];

4.将color转为UIImage

?

1

2

3

4

5

6

7

8

9

10
- (UIImage *)createImageWithColor:(UIColor *)color {

CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);

UIGraphicsBeginImageContext(rect.size);

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetFillColorWithColor(context, [color CGColor]);

CGContextFillRect(context, rect);

UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return theImage;

}

5.加载启动图的时候隐藏statusbar

在info.plist中加入Status bar is initially hidden 设置为YES

分享一些iOS开发实用的小技巧

6.获取按钮title的size

?

1

2

3

4

5

6

7
/**

* 获取按钮title的size

*/

- (CGFloat)getBtnTitleWidth:(UIButton*)btn {

CGSize titleSize = [btn.titleLabel.text sizeWithAttributes:@{NSFontAttributeName:btn.titleLabel.font}];

return titleSize;

}

7.设置Status bar颜色

?

1

2
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, -20, ScreenWidth, 20)];[view setBackgroundColor:COLOR_APP_MAIN];

[viewController.navigationController.navigationBar addSubview:view];

8.json转dictionary,dictionary转json

?

1

2

3

4

5

6

7

8

9
+ (NSString*)dictionaryToJson:(NSDictionary *)dic {

NSError *parseError = nil;

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&parseError];

return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

}

?

1

2

3

4

5

6

7

8
+(NSDictionary *)jsonToDic:(NSString*)jsonStr {

NSData *jsonData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];

NSError *err;

NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData

options:NSJSONReadingMutableContainers

error:&err];

return dic;

}

9.是否允许推送

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14
+(BOOL)isAllowedNotification{

if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {

UIUserNotificationSettings *setting = [[UIApplication sharedApplication] currentUserNotificationSettings];

if(UIUserNotificationTypeNone != setting.types) {

return YES;

}

}

NSLog(@"不允许推送");

return NO;

}

10.磁盘空间相关

?

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
+ (NSString *)memoryFormatter:(long long)diskSpace {

NSString *formatted;

double bytes = 1.0 * diskSpace;

double megabytes = bytes / MB;

double gigabytes = bytes / GB;

if (gigabytes >= 1.0)

formatted = [NSString stringWithFormat:@"%.2f GB", gigabytes];

else if (megabytes >= 1.0)

formatted = [NSString stringWithFormat:@"%.2f MB", megabytes];

else

formatted = [NSString stringWithFormat:@"%.2f bytes", bytes];

NSLog(@"fotmatted=%@",formatted);

return formatted;

}

+ (NSString *)totalDiskSpace {

long long space = [[[[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:nil] objectForKey:NSFileSystemSize] longLongValue];

return [self memoryFormatter:space];

}

+ (NSString *)freeDiskSpace {

long long freeSpace = [[[[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:nil] objectForKey:NSFileSystemFreeSize] longLongValue];

return [self memoryFormatter:freeSpace];

}

11.修改了leftBarButtonItem如何恢复系统侧滑返回功能

?

1

2

3

4

5

6

7

8

9
//设置代理

self.interactivePopGestureRecognizer.delegate = self;

#pragma mark - <UIGestureRecognizerDelegate>

//实现代理方法:return YES :手势有效, NO :手势无效

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer

{

//当导航控制器的子控制器个数 大于1 手势才有效

return self.childViewControllers.count > 1;

}

或者用第三方 UINavigationController+FDFullscreenPopGesture

12.使用UIAppearance在某个状态下设置颜色,字体等不好使

只需要在对应的位置用layoutIfNeeded刷新一下就可以了

13.设置圆形图片

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16
/** 设置圆形图片(放到分类中使用) */

- (UIImage *)cutCircleImage {

UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0);

// 获取上下文

CGContextRef ctr = UIGraphicsGetCurrentContext();

// 设置圆形

CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height);

CGContextAddEllipseInRect(ctr, rect);

// 裁剪

CGContextClip(ctr);

// 将图片画上去

[self drawInRect:rect];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return image;

}

14.如果在xib中有一个控件, 已经明确设置尺寸了,输出的frame也是对的, 但是显示出来的效果不一样(比如尺寸变大了), 如果是这种情况一般就是autoresizingMask自动伸缩属性在搞鬼!

解决办法如下:

?

1

2

3

4

5
//xib的awakeFromNib方法中设置UIViewAutoresizingNone进行清空

- (void)awakeFromNib {

self.autoresizingMask = UIViewAutoresizingNone;

}

15.通过图片Data数据第一个字节 来获取图片扩展名

?

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
- (NSString *)contentTypeForImageData:(NSData *)data {

uint8_t c;

[data getBytes:&c length:1];

switch (c) {

case 0xFF:

return @"jpeg";

case 0x89:

return @"png";

case 0x47:

return @"gif";

case 0x49:

case 0x4D:

return @"tiff";

case 0x52:

if ([data length] < 12) {

return nil;

}

NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding];

if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) {

return @"webp";

}

return nil;

}

return nil;

}

16.用0补全的方法

?

1

2

3

4

5
NSInteger count = 5;

//02代表:如果count不足2位 用0在最前面补全(2代表总输出的个数)

NSString *string = [NSString stringWithFormat:@"%02zd",count];

//输出结果是: 05

NSLog(@"%@", string);

总结

以上就是这篇文章的全部内容,希望本文中的这些小技巧能给大家开发iOS的时候提供一定的帮助,如果有疑问大家可以留言交流。

收藏 (0) 打赏

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

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

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

快网idc优惠网 建站教程 分享一些iOS开发实用的小技巧 https://www.kuaiidc.com/91518.html

相关文章

发表评论
暂无评论