美文网首页
iOS开发奇淫技巧(不定时更新)

iOS开发奇淫技巧(不定时更新)

作者: 只敲代码不偷桃 | 来源:发表于2017-07-25 17:08 被阅读57次
一、获取某个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;
}
二、禁止锁屏
[UIApplication sharedApplication].idleTimerDisabled = YES;
或
[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
三、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);
四、CocoaPods pod install/pod update更新慢的问题

pod install --verbose --no-repo-update

  • 如果不加后面的参数,默认会升级CocoaPods的spec仓库,加一个参数可以省略这一步,然后速度就会提升不少
五、获取私有属性和成员变量
//获取私有属性 比如设置UIDatePicker的字体颜色- (void)setTextColor
{
    //获取所有的属性,去查看有没有对应的属性
    unsigned int count = 0;
    objc_property_t *propertys = class_copyPropertyList([UIDatePicker class], &count);
    for(int i = 0;i < count;i ++)
    {
        //获得每一个属性
        objc_property_t property = propertys[i];
        //获得属性对应的nsstring
        NSString *propertyName = [NSString stringWithCString:property_getName(property) encoding:NSUTF8StringEncoding];
        //输出打印看对应的属性
        NSLog(@"propertyname = %@",propertyName);
        if ([propertyName isEqualToString:@"textColor"])
        {
            [datePicker setValue:[UIColor whiteColor] forKey:propertyName];
        }
    }
}
//获得成员变量 比如修改UIAlertAction的按钮字体颜色
unsigned int count = 0;
Ivar *ivars = class_copyIvarList([UIAlertAction class], &count);
for(int i =0;i < count;i ++)
{
    Ivar ivar = ivars[i];
    NSString *ivarName = [NSString stringWithCString:ivar_getName(ivar) encoding:NSUTF8StringEncoding];        NSLog(@"uialertion.ivarName = %@",ivarName);
    if ([ivarName isEqualToString:@"_titleTextColor"])
    {
        [alertOk setValue:[UIColor blueColor] forKey:@"titleTextColor"];
        [alertCancel setValue:[UIColor purpleColor] forKey:@"titleTextColor"];
    }
}
六、iOS 开发中一些相关的路径
模拟器的位置:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs 
 
文档安装位置:/Applications/Xcode.app/Contents/Developer/Documentation/DocSets
 
插件保存路径:
~/Library/ApplicationSupport/Developer/Shared/Xcode/Plug-ins
 
自定义代码段的保存路径:
~/Library/Developer/Xcode/UserData/CodeSnippets/ 
如果找不到CodeSnippets文件夹,可以自己新建一个CodeSnippets文件夹。
 
描述文件路径
~/Library/MobileDevice/Provisioning Profiles
七、手动更改iOS状态栏的颜色
- (void)setStatusBarBackgroundColor:(UIColor *)color
{
    UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
    if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]){
        statusBar.backgroundColor = color;
    }
}
八、图片上绘制文字 写一个UIImage的category
- (UIImage *)imageWithTitle:(NSString *)title fontSize:(CGFloat)fontSize
{    //画布大小
    CGSize size=CGSizeMake(self.size.width,self.size.height);    //创建一个基于位图的上下文
    UIGraphicsBeginImageContextWithOptions(size,NO,0.0);//opaque:NO  scale:0.0
    
    [self drawAtPoint:CGPointMake(0.0,0.0)];    //文字居中显示在画布上
    NSMutableParagraphStyle* paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
    paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping;
    paragraphStyle.alignment=NSTextAlignmentCenter;//文字居中
    
    //计算文字所占的size,文字居中显示在画布上
    CGSize sizeText=[title boundingRectWithSize:self.size options:NSStringDrawingUsesLineFragmentOrigin
                                     attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:fontSize]}context:nil].size;    CGFloat width = self.size.width;    CGFloat height = self.size.height;    CGRect rect = CGRectMake((width-sizeText.width)/2, (height-sizeText.height)/2, sizeText.width, sizeText.height);    //绘制文字
    [title drawInRect:rect withAttributes:@{ NSFontAttributeName:[UIFont systemFontOfSize:fontSize],NSForegroundColorAttributeName:[ UIColor whiteColor],NSParagraphStyleAttributeName:paragraphStyle}];    //返回绘制的新图形
    UIImage *newImage= UIGraphicsGetImageFromCurrentImageContext();    UIGraphicsEndImageContext();    return newImage;
}
九、UIView设置部分圆角
CGRect rect = view.bounds;CGSize radio = CGSizeMake(30, 30);//圆角尺寸
UIRectCorner corner = UIRectCornerTopLeft|UIRectCornerTopRight;//这只圆角位置
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect byRoundingCorners:corner cornerRadii:radio];
CAShapeLayer *masklayer = [[CAShapeLayer alloc]init];//创建shapelayermasklayer.frame = view.bounds;
masklayer.path = path.CGPath;//设置路径view.layer.mask = masklayer;
十、把MRC转换成ARC
  • 1.把Build Phases -->Complie Sources 下文件的-fno-objc-arc去掉
  • 2.Build Settings 下搜索arc,找到Object-C Automatic Reference Counting把值改为NO
  • 3.选择Xcode --> Edit --> Conver --> To Object-C ARC

相关文章

网友评论

      本文标题:iOS开发奇淫技巧(不定时更新)

      本文链接:https://www.haomeiwen.com/subject/urapittx.html