我的iOS - 百科全书(开发常用汇总-持续更新)

2016-07-08  本文已影响187人  degulade

总结一些自己常用到,并且比较实用的开发技巧或者工具之类的干货吧。
归纳在一起,平时查阅起来就比较方便了。

(一)字符类

1. NSString与int和float的相互转换

    NSString *str1 = @"abc";
    NSString *str2 = @"123";
    NSString *newString = [NSString stringWithFormat:@"%@%@",str1,str2];
    NSString *str3 = @"456";
    int intString = [str3 intValue];
    NSString *stringInt = [NSString stringWithFormat:@"%d",intString];
    float floatString = [stringInt floatValue];
    NSString *stringFloat = [NSString stringWithFormat:@"%f",floatString];

2. 使用 arc4random 生成随机数

int o = arc4random() % 100;
int t =100 + (arc4random() % 101);
-(int)getRandomNumber:(int)from to:(int)to{
        return (int)(from + (arc4random() % (to - from) + 1));
}

(二)宏定义

1. 各机型屏幕宽高适配

/** .m文件 */
#import <Foundation/Foundation.h>
//各机型屏幕宽高适配
#define ISIPHONE          [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone
#define ISIPHONE5          ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
#define ISIPHONE4          ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) : NO)
#define ISIPHONE6          ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size) : NO)
#define ISIPHONE6plus         ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1080, 1920), [[UIScreen mainScreen] currentMode].size) : NO)
//对应屏幕分辨率
/*
 iPhone设备      尺寸 分辨率                   点
 iPhone 3和3s  3.5英寸    (320×480)         320×480
 iPhone 4和4s  3.5英寸    (640×960)         320×480
 iPhone 5和5s  4.0英寸    (640×1136)        320×568
 iPhone 6         4.7英寸    (750×1334)        375×667
 iPhone6 Plus:5.5英寸    (1080×1920)    414x736(打印测试出来的)
 */
#define NeedHightForiPhone5        568
#define NeedWidthForiPhone5        320
#define NeedHightForiPhone4        480
#define NeedWidthForiPhone4        320
#define NeedHightForiPhone6        667
#define NeedWidthForiPhone6        375
#define NeedHightForiPhone6plus       736
#define NeedWidthForiPhone6plus       414

#define SCALE_LOGICALPT_TO_DEVICEPX      ([[UIScreen mainScreen] scale])
#define POINT_TO_PIXEL(x)        (x*SCALE_LOGICALPT_TO_DEVICEPX)
#define PIXEL_TO_POINT(x)        (x/SCALE_LOGICALPT_TO_DEVICEPX)

#define TIMEOUT_VOICECALL_ENTER_STUDYROOM    50

@interface GlobalUtils : NSObject
+ (CGSize)selfBounds;
@end
/** .h文件 */
#import "GlobalUtils.h"
#import <AVFoundation/AVAudioSession.h>

@implementation GlobalUtils

//不同机型的宽高
+(CGSize)selfBounds
{
    CGSize size;
    if (ISIPHONE4) {
        size=CGSizeMake(NeedWidthForiPhone4, NeedHightForiPhone4);
    }
    else if (ISIPHONE5) {
        size=CGSizeMake(NeedWidthForiPhone5, NeedHightForiPhone5);
    }
    else if (ISIPHONE6)
    {
        size=CGSizeMake(NeedWidthForiPhone6, NeedHightForiPhone6);
    }
    else if (ISIPHONE6plus)
    {
        size=CGSizeMake(NeedWidthForiPhone6plus, NeedHightForiPhone6plus);
    }
    return size;
}

@end

(三)工具类

1. 正则表达式

+(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];
}
+(BOOL)isMobileNumber:(NSString *)mobileNum{
    NSString *MOBILE  =@"^1+[3578]+\\d{9}";
    NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
    if ([regextestmobile evaluateWithObject:mobileNum] == YES) {
        return YES;
    }
    else{
        return NO;
    }
}

2. 验证码倒计时

+ (void)timeDown:(UIButton *)button;
{
    //设置倒计时
    __block int timeout = 10; //倒计时时间
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
    dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行
    dispatch_source_set_event_handler(_timer, ^{
        if(timeout<=0){ //倒计时结束,关闭
            dispatch_source_cancel(_timer);
            dispatch_async(dispatch_get_main_queue(), ^{
                //设置界面的按钮显示 根据自己需求设置
                button.userInteractionEnabled = YES;
                [button setTitle:@"验证码" forState:UIControlStateNormal];
                button.backgroundColor = [UIColor orangeColor];
                button.layer.cornerRadius = button.height/5;
            });
        }else{//倒计时开始
            int seconds = timeout % 60;
            NSString *strTime = [NSString stringWithFormat:@"%.2d", seconds];
            dispatch_async(dispatch_get_main_queue(), ^{
                //设置界面的按钮显示 根据自己需求设置
                [UIView beginAnimations:nil context:nil];
                [UIView setAnimationDuration:1];
                [button setTitle:[NSString stringWithFormat:@"%@秒",strTime] forState:UIControlStateNormal];
                [UIView commitAnimations];
                button.userInteractionEnabled = NO;
                button.backgroundColor = [UIColor lightGrayColor];
            });
            timeout--;
        }
    });
    dispatch_resume(_timer);
}

3. 给输入框(UITextField)的左侧设置图标

/**
 *  给UITextField设置左侧的图片
 *
 *  @param textField UITextField
 *  @param imageName 图片名称
 */
+(void)setLeftViewWithTextField:(UITextField *)textField imageName:(NSString *)imageName{
    UIImageView *leftView = [[UIImageView alloc]initWithFrame:CGRectMake(20, 0, 40, 40)];
    leftView.image = [UIImage imageNamed:imageName];
    leftView.contentMode = UIViewContentModeCenter;
    textField.leftView = leftView;
    textField.leftViewMode = UITextFieldViewModeAlways;
}

4. 设置RGB为image

+ (UIImage *)imageWithColor:(UIColor *)color
{
    CGRect rect = CGRectMake(0, 0, 1, 1);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}

5. Image转换成color

[UIColor colorWithPatternImage:[UIImageimageNamed:@“bg.png"]];

6. 隐藏UITableView(cell)多余的分割线

+ (void)setExtraCellLineHidden: (UITableView *)tableView
{
    UIView *view =[ [UIView alloc]init];
    view.backgroundColor = [UIColor clearColor];
    [tableView setTableFooterView:view];
}
上一篇下一篇

猜你喜欢

热点阅读