IOS 开发中所用神技

前言:

以下内容是作者在实际开发中所总结的,主要列举了一些实用小技巧,也希望在实际开发中能够帮到你。


  1. 设置控件的圆角:
myView.layer.cornerRadius = 6; 
myView.layer.masksToBounds = YES;
transform = CGAffineTransformRotate(manImageView.transform,M_PI/6.0);
manImageView.frame=CGRectMake(100,100, 120,100);
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];
transform = CGAffineTransformScale(manImageView.transform,1.2,1.2);
transform=CGAffineTransformInvert(manImageView.transform);
  1. 设置控件的阴影:
myView.layer.shadowColor = [UIColor blackColor].CGColor;
myView.layer.shadowOffset = CGSizeMake(0, 0);
myView.layer.shadowOpacity = 1;
  1. 换行连接字符:
NSString *str = @"数不清的漫山花朵"\\
  "给这座大山添加了不少情趣";
NSLog(@"%@",str);
  1. 判断一个字符串中是否包含另外一个字符串:
NSString *str1 = @"abcqwqwq";
NSString *str2 = @"abc";
NSLog(@"%@", [str1 rangeOfString:str2].length != 0 ? @"包含" : @"不包含");
  1. 获取plist文件的数据:
   NSString *path = [[NSBundle mainBundle]pathForResource:@"heros" ofType:@"plist"];
   NSArray *array = [NSArray arrayWithContentsOfFile:path];
  1. nil文件的获取:
APPCell *cell = [[NSBundle mainBundle]loadNibNamed:@"" owner:nil options:nil].lastObject;
  1. 获取屏幕点击坐标:
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    UITouch *touch = [touches anyObject];
    CGPoint point = [touch locationInView:touch.view];
    NSLog(@"%@",NSStringFromCGPoint(point));
}
  1. 系统偏好存储的方式:
//1. NSUserDefaults简单实用:
// 创建偏好对象
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    // 存值
    [defaults setObject:@"daojiao" forKey:@"name"];
    // 同步
    [defaults synchronize];
    // 取值
    NSString *str = [defaults objectForKey:@"name"];
    NSLog(@"%@",str);
// 2. NSUserDefaults图片存取:
[[NSUserDefaults standardUserDefaults] setObject:UIImagePNGRepresentation([UIImage imageNamed:@"Default-568h@2xiPhonePortraitiOS78_320x568pt" ]) forKey:@"image"];
NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:@"image"];
self.imageView.image = [UIImage imageWithData:imageData];
  1. 定时器:
//第一种:
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(say) userInfo:nil repeats:YES];
//第二种:
 CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(say)];
 [link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
  1. 延时:
// 第一种:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{   
  });
// 第二种:
 [NSThread sleepForTimeInterval:2.0f];
// 第三种:
[self performSelector:self withObject:@selector(operation) afterDelay:1.0];
  1. 点击视图退出键盘:
第一种方式:
[textField resignFirstResponder];
第二种方式:
[self.view endEditing:YES];
  1. 将OC字符串转换成C字符:
sql.UTF8String
  1. 结构体循环:
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    NSLog(@"第 %d 项内容是 %@", (int)idx, obj);
    if ([@"王五" isEqualToString:obj]) *stop = YES;
}];
  1. 不使用HTTPS方法:
<key>NSAppTransportSecurity</key>
        <dict>
                <key>NSAllowsArbitraryLoads</key>
                <true/>
        </dict>
  1. 随机数:
int x = arc4random() % 100;
//生成指定范围随机数[1-6]
int num = ((arc4random() % 6) + 1);
  1. 添加动画:
// 第一种:
[UIView animateWithDuration:2.0f animations:^{
         //.. insert code
     }];
// 第二种:
   [UIView beginAnimations:@"doflip" context:nil];
    //设置时常
    [UIView setAnimationDuration:2.0f];
    //设置动画淡入淡出
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    //设置代理
    [UIView setAnimationDelegate:self];
    //设置翻转方向
      [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];
    //动画结束
    [UIView commitAnimations];
  1. arc和非arc的转换:
如果你的项目使用的非 ARC 模式,则为 ARC 模式的代码文件加入 -fobjc-arc 标签。
如果你的项目使用的是 ARC 模式,则为非 ARC 模式的代码文件加入 -fno-objc-arc 标签。
  1. Json(反序列化):
NSArray *array = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
  1. URL中有特殊字符需要加百分号转译:
NSLog(@"%@",[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]);
// 取反
NSLog(@"%@",[str stringByRemovingPercentEncoding]);
  1. 局部刷新:
 // 刷新指定行 
 NSIndexPath *path = [NSIndexPath indexPathForRow:alertView.tag inSection:0];
 [self.tableview reloadRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationRight];
//如果不进行刷新会怎么样?(修改之后不会即时刷新,要等到重新对cell进行数据填充的时候才会刷新)
  1. 屏幕自动旋转:
self.imageView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
  1. 获取系统版本:
 [[UIDevice currentDevice].systemVersion doubleValue];
  1. 设置状态背景色:
 // 第一种方式:
在info.plist文件中添加View controller-based status bar appearance  设为 NO
在AppDelegate.m 文件中的didFinishLaunchingWithOptionsfa方法中添加application.statusBarStyle = UIStatusBarStyleLightContent; 即可改变状态栏背景色。
总结:这种方法在ios9之前不会报错,但ios9后会报错,但不影响程序的正常运行,这是苹果自身的bug。
//第二种方式:在重写的UINavigationController控制器中添加一下代码
-(UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}
总结:暂时能够解决问题,但目前不知解决的思路。
  1. 视图位置交换:
  //把一个子视图放到最下面
  [self.view sendSubviewToBack:view9]; 
//把一个子视图放到最上面 
 [self.view bringSubviewToFront:view9];
[self.view insertSubview:view10 atIndex:6];  
//我们也可以指定插入在谁的下面,在view8下面,那就在最下面了  
[self.view insertSubview:view10 belowSubview:view8]; 
 //我们也可以指定插入在谁的上面,在view9上面,那就在最上面了 
 [self.view insertSubview:view10 aboveSubview:view9];  
//我们也可以交换两个视图的位置,比如把5和7交换,也就是view8和view10
  1. 单击手势:
 UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImageView:)];        
[cell addGestureRecognizer:singleTap];
  1. 设置导航栏主题:
// 通过navBar设置导航栏的所有属性,比如背景,字体大小...
 UINavigationBar *navBar = [UINavigationBar appearance];
  1. 获取tabbar控制其中子控制器的个数:
self.viewControllers.count;
  1. 字体设置:
attr[NSForegroundColorAttributeName ] = [UIColor whiteColor];
attr[NSFontAttributeName] = [UIFont systemFontOfSize:20];
[navBar setTitleTextAttributes:attr];
  1. 隐藏tabbar:
viewController.hidesBottomBarWhenPushed = YES;
  1. 禁用系统自带侧滑:
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
  1. UIWebView填充html自动适配:
[webView setScalesPageToFit:YES];
  1. 获取设备类型:
 [UIDevice currentDevice].model;
  1. 按钮存储多个值(Runtime):
#import <objc/runtime.h>
//存值: 
objc_setAssociatedObject(btn, @"text", textf, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
//取值:
UITextField *t = objc_getAssociatedObject(button, @"text");
  1. 获取UIStoryboard中的控制器:
UIStoryboard *b = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
TwoViewController *two = [b instantiateViewControllerWithIdentifier:@"daili"];
  1. 返回不带状态栏的Rect:
CGRect bounds = [[UIScreen mainScreen] applicationFrame];
  1. iOS各种机型的屏幕适配问题以iPhone6P为基准:
#define SYRealValue(value) ((value)/414.0f*[UIScreen mainScreen].bounds.size.width)
  1. 数组转NSData:
NSArray *arr1 = [[NSArray alloc]initWithObjects:@"0",@"5",nil];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:arr1];
NSArray *arr2 = [NSKeyedUnarchiver unarchiveObjectWithData:data];
  1. 获取项目路径:
$(SRCROOT):代表了工程的相对路径
$(PROJECT_NAME) :是相对工程名
  1. 获取APP下载地址:
https://itunes.apple.com/cn/app/idxxxxxxx?mt=8
将xxxxxxx替换成自己app ID
  1. 正则表达式使用:
NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
return [identityCardPredicate evaluateWithObject:str];
regex:验证的类型 (@"^(\\\\d{14}|\\\\d{17})(\\\\d|[xX])$") 
str:需要验证的字符
  1. NSString 转 NSArray :
  NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
  NSArray *jsonObject = [NSJSONSerialization JSONObjectWithData:[result dataUsingEncoding:NSUTF8StringEncoding];
options:0 error:NULL];
  1. 修改cell选中状态的背景:
cell.selectedBackgroundView
http://blog.csdn.net/a6472953/article/details/7532212
  1. TextField有值没值的判断::
_button.hidden = !(range.location > 0) && !(string.length == 1);
  1. 手机振动:
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
  1. 取消navigationbar下面的黑线:
self.navigationBar.barStyle = UIBaselineAdjustmentNone;
  1. 简单的二维动画操作:
self.testView.transform = CGAffineTransformMakeRotation(10*i);      // 旋转
 self.testView.transform = CGAffineTransformRotate(self.testView.transform, 1);  // 可以承接上次动作,去操作。
 self.testView.transform = CGAffineTransformTranslate(self.testView.transform, 0, 0);
 self.testView.transform = CGAffineTransformMakeScale(i,i);  // 放大
self.testView.transform=CGAffineTransformScale(self.testView.transform, 1, 1);
 self.testView.transform = CGAffineTransformMakeTranslation(1,-100);   // 平移
  1. 帧动画:
 self.imageView.animationImages = [NSArray arrayWithObjects:
                                      [UIImage imageNamed:@"1"]
                                      ,[UIImage imageNamed:@"2"]
                                      ,[UIImage imageNamed:@"3"]
                                      ,[UIImage imageNamed:@"4"]
                                      ,[UIImage imageNamed:@"5"]
                                      ,nil];
    self.imageView.animationDuration = 5.0;
    self.imageView.animationRepeatCount = 3;
    [self.imageView startAnimating];
  1. 获取某个view所在的控制器:
-(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;
}
  1. 如何将IOS.m文件编译成C++:
// 打开 terminal 切换目录到需要转换的.m文件目录下,输入以下命令:
clang -rewrite-objc fileName.m
  1. 获取当前界面的View:
UIView *view = [[UIApplication sharedApplication].windows lastObject];
  1. 如何从A应用跳转到B应用::
 //1.简单的跳转:
第一步:在B应用中配置URL Schemes
第二步:配置A应用访问B应用的NSURL *url = [NSURL URLWithString:@"weixin://"];  weixin就是B应用中配置URL Schemes参数。
第三步:在A应用中通过[[UIApplication sharedApplication] canOpenURL:url] 判断应用是否存在。
第四步:如果应用存在打开应用[[UIApplication sharedApplication] openURL:url];
备注:在执行第三步操作时,控制台可能打印错误信息,原因是苹果公司为了提高应用的安全性,想要访问必须设置对应白名单,白名单中最大允许50个应用被访问,如何设置白名单,
进入Info.plist文件中增加以下代码:
<key>LSApplicationQueriesSchemes</key>
    <array>
        <string>weixin</string>
        .....
    </array>
//  2 .跳转传参数:
在简单的跳转的url中稍作修改:
URL配置:
 NSURL *url = [NSURL URLWithString:@"weixin://www.shixueqian.com/abc?title=hello&content=helloworld"];     //打开url
在B应用的AppDelegate.m 文件中增加接收参数的代理就行:
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {     
 NSLog(@"url=====%@ \\n  sourceApplication=======%@ \\n  annotation======%@", url, sourceApplication, annotation);     
  return YES; 
}
IOS提供的代理:
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url ;  //回调是在iOS2.0的时候推出的,参数只有url。
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation ;//B回到是在iOS4.2的时候推出的,参数有url sourceApplication annotation
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options NS_AVAILABLE_IOS(9_0);//B回到是在iOS4.2的时候推出的,参数有url sourceApplication annotation
  1. 通过运行时,置换两个方法执行顺序:
Method cell = class_getClassMethod([UITableView class], @selector(tableView:cellForRowAtIndexPath:));
Method cellHeight = class_getClassMethod([UITableView class], @selector(tableView:heightForRowAtIndexPath:));
method_exchangeImplementations(cell, cellHeight);
  1. 目录文件获取:
// 获取沙盒主目录路径  
NSString *homeDir = NSHomeDirectory();  
// 获取Documents目录路径  
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
NSString *docDir = [paths objectAtIndex:0];  
// 获取Caches目录路径  
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);  
NSString *cachesDir = [paths objectAtIndex:0];  
// 获取tmp目录路径  
NSString *tmpDir =  NSTemporaryDirectory();  
  1. 在一个字符串中查找另外一个字符是否存在:
[request.resourPath rangeOfString:@"?"].location == NSNotFound
  1. 数组去重的三个小技巧:
+(NSArrayExample *)shareManager {
    static NSArrayExample *ae;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        ae = [[NSArrayExample alloc]init];
    });
    return ae;
}
+(NSArrayExample *)arrayRemove:(NSArray <NSString *> *)sourceArray arrayBlock:(void(^)(NSArray<NSString *> * _array))arrayBlock {
    // 第一种方式 (有序) 利用NSMutableArray自带的containsObject方法检查重复值去重
//    NSMutableArray *array = [[NSMutableArray alloc]initWithCapacity:sourceArray.count];
//    for (NSString *value in sourceArray) {
//        // 检查数组中是否包含该值
//        if (![array containsObject:value]) {
//            [array addObject:value];
//        }
//    
   // 第二种方式(无序)利用NSMutableDictionary自身的特点,不能添加重复值达到去重,效率比第一种方式高
//    NSMutableDictionary *dic = [[NSMutableDictionary alloc]initWithCapacity:sourceArray.count];
//    for (NSString *value in sourceArray) {
//        [dic setObject:value forKey:value];
//    }
//    NSArray *array = dic.allValues;
//
    // 第三中方式(无序)和第二种方式一样的思路
    NSSet *set = [NSSet setWithArray:sourceArray];
    NSArray *array = [set allObjects];
    if (array.count != 0 && array != nil) {
        if (arrayBlock) {
            arrayBlock(array);
        }
    }
    return [self shareManager];
}
  1. 处理URL中包含中文字符:
//IOS8
[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//IOS9
[str stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]
  1. 如何判断项目文件是否包含指定nib文件:
if ([[NSBundle mainBundle]pathForResource:self.identifiers[i] ofType:@"nib"] != nil) {
// ...code
}
  1. NSString转NSDate:
// 字符转日期  2016-12-15
+(NSDate *)charConvertDate:(NSString *) str{
     NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
    formatter.dateFormat = @"yyyy-MM-dd";
    formatter.timeZone   = [NSTimeZone defaultTimeZone];
    NSDate *date         = [formatter dateFromString:str];
    return date;
}
  1. 将navigationbar 上的按钮靠边:
 UIBarButtonItem * backBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:self.backButton];
        UIBarButtonItem *space = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:self action:nil];
        space.width = -20;
        viewController.navigationItem.leftBarButtonItems = @[space,backBarButtonItem];
}
  1. 获取某个view所在的控制器:
-(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;
}
  1. 两种方法删除NSUserDefaults所有记录:
//方法一
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. 打印系统所有已注册的字体名称:
void enumerateFonts()
{
    for(NSString *familyName in [UIFont familyNames])
   {
        NSLog(@"%@",familyName);               
        NSArray *fontNames = [UIFont fontNamesForFamilyName:familyName];       
        for(NSString *fontName in fontNames)
       {
            NSLog(@"\\t|- %@",fontName);
       }
   }
}
  1. 获取图片某一点的颜色:
-(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. 禁止锁屏:
[UIApplication sharedApplication].idleTimerDisabled = YES;
或
[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
  1. iOS跳转到App Store下载应用评分:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=APPID"]];
  1. iOS 获取汉字的拼音:
+(NSString *)transform:(NSString *)chinese
{    
    //将NSString装换成NSMutableString 
    NSMutableString *pinyin = [chinese mutableCopy];    
    //将汉字转换为拼音(带音标)    
    CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformMandarinLatin, NO);    
    NSLog(@"%@", pinyin);    
    //去掉拼音的音标    
    CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformStripCombiningMarks, NO);    
    NSLog(@"%@", pinyin);    
    //返回最近结果    
    return pinyin;
 }
  1. 获取实际使用的LaunchImage图片:
-(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;
} }
  1. NSArray 快速求总和 最大值 最小值 和 平均值:
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);
  1. NSDateFormatter的格式:
G: 公元时代,例如AD公元
yy: 年的后2位
yyyy: 完整年
MM: 月,显示为1-12
MMM: 月,显示为英文月份简写,如 Jan
MMMM: 月,显示为英文月份全称,如 Janualy
dd: 日,2位数表示,如02
d: 日,1-2位显示,如 2
EEE: 简写星期几,如Sun
EEEE: 全写星期几,如Sunday
aa: 上下午,AM/PM
H: 时,24小时制,0-23
K:时,12小时制,0-11
m: 分,1-2位
mm: 分,2位
s: 秒,1-2位
ss: 秒,2位
S: 毫秒
  1. #324a23颜色转USColor:
+(UIColor *) stringTOColor:(NSString *)str
{
    if (!str || [str isEqualToString:@""]) {
        return nil;
    }
    unsigned red,green,blue;
    NSRange range;
    range.length = 2;
    range.location = 1;
    [[NSScanner scannerWithString:[str substringWithRange:range]] scanHexInt:&red];
    range.location = 3;
    [[NSScanner scannerWithString:[str substringWithRange:range]] scanHexInt:&green];
    range.location = 5;
    [[NSScanner scannerWithString:[str substringWithRange:range]] scanHexInt:&blue];
    UIColor *color= [UIColor colorWithRed:red/255.0f green:green/255.0f blue:blue/255.0f alpha:1];
    return color;
}
  1. 获取当前视图:
[[UIApplication sharedApplication].windows lastObject]

总结:

文章后续还会更新。文章中可能存在错别字或者理解不到位的地方,欢迎挑刺,如果你也是一枚IOS爱好者,请加入我们的QQ群:126440594,一起分享,一起成长。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容