iOS小Tips

仅为我自己记录用的,一些乱七八糟的东西,有需要欢迎使用,觉得小白的大神请路过。。。

宏定义判断null字符
#define NSStringIsBlank(string) (![string isKindOfClass:[NSString class]] || [[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] isEqualToString:@""])
#define NSStringIsPresent(string) !NSStringIsBlank(string)
cocoapods
platform :ios, '8.0'
target '项目名称' do
pod 'AFNetworking' , '~> 3.0'
end
字符串-设置颜色不同
-(NSMutableAttributedString *)changeStrColor:(NSString *)string WithColor:(UIColor *)color WithLocation:(NSUInteger)location andLength:(NSUInteger)length
{    //将string格式变为attributedString    
      NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc]initWithString:string];    
     //设置color颜色 loc起始位置 len长度    
      [attributedStr addAttribute:NSForegroundColorAttributeName value:color range:NSMakeRange(location, length)];    
      return attributedStr;
}
字符串 - 设置字体大小不同
-(NSMutableAttributedString *)changeStrFont:(NSString *)string withLength:(NSString *)length{    
      NSMutableAttributedString *attributedStr =[[NSMutableAttributedString alloc] initWithString:string];    
      [attributedStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:17] range:NSMakeRange(14, length.length)];      
       return attributedStr;
}
cell.painFront.attributedText = strFront;
数组倒序
NSArray *array = (NSMutableArray *)[[array reverseObjectEnumerator] allObjects];
字符串 - 根据字体大小改变label高度
-(CGFloat)getHeightWithText:(NSString *)text{    
      CGRect r = [text boundingRectWithSize:CGSizeMake(kScreenSize.width - 45 ,10000) options:(NSStringDrawingUsesLineFragmentOrigin) attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:17.f]} context:nil];       
       return r.size.height;
}
提示框
#define IS_iOS8 [[UIDevice currentDevice].systemVersion floatValue] >= 8.0f
-(void)alertShowWithMsg:(NSString *)msg{  
        if (IS_iOS8) {       
           UIAlertController *tipVc  = [UIAlertController alertControllerWithTitle:@"提示" message:msg preferredStyle:UIAlertControllerStyleAlert];     
           UIAlertAction *cancleAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {            
        [self dismissViewControllerAnimated:YES completion:nil];        
}];       
       [tipVc addAction:cancleAction];       
       [self presentViewController:tipVc animated:YES completion:nil];             
   }else{  
       UIAlertView *tip = [[UIAlertView alloc] initWithTitle:@"提示" message:msg delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];     
       [tip show];    
      }
}
[[UIView appearance] setTintColor:XK_COL_RGB(0x2edead)];//alertView的提示字体颜色
外框
[view.layer setBorderWidth:2.0];
[view.layer setBorderColor:[UIColor clearColor].CGColor];
切圆角
[view.layer setCornerRadius:Radius];
view.layer.masksToBounds = YES;
字符串 - 设置按钮的下划线
NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"常见问题"];   
NSRange strRange = {0,[str length]};    
[str addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:strRange];
[_ProblemButton setAttributedTitle:str forState:UIControlStateNormal];
设置textview的placeholder
-(void)textViewDidChange:(UITextView *)textView
{
     if (textView.text.length == 0) {
          self.GreatLab.text = @"placeholder"; //自己设置的Label,用于placeholder
     } else {
          self.GreatLab.text = @"";
     }
}
找底层viewcontroller 父视图
-(UIViewController *)superViewController{    
      for (UIView *next = [self superview]; next; next = next.superview){        
            UIResponder *nextResponder = [next nextResponder];        
            if ([nextResponder isKindOfClass:[UIViewController class]]) {            
                  return (UIViewController *)nextResponder;        
            }   
        }    
    return nil;
}
找底层rootViewController 父视图
UIViewController *vc = [UIApplication sharedApplication].windows[0].rootViewController
拨打电话
NSMutableString * str=[[NSMutableString alloc] initWithFormat:@"telprompt://%@“,@“电话号码"];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
隐藏电话或银行卡中间几位
NSString *tel      = [self.attendant.payCard stringByReplacingCharactersInRange:NSMakeRange(4, 12) withString:@"************"];
cell.bankNub.text  = tel;
字符串 - 分割字符串
NSString *month = [NSString stringWithFormat:@"%@",self.walletListInfo.month];
NSMutableArray *strArray = [NSMutableArray array];
NSArray *array = [month componentsSeparatedByString:@"-"];
for (int i = 0; i < [array count]; i++) {
     NSLog(@"string:%@", [array objectAtIndex:i]);
     NSString *str = [array objectAtIndex:i];
    [strArray addObject:str];
}
根据日期查周几
NSDateComponents *_comps = [[NSDateComponents alloc] init];
[_comps setDay:[day integerValue]];
[_comps setMonth:[mouth integerValue]];
[_comps setYear:[year integerValue]];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *_date = [gregorian dateFromComponents:_comps];
NSDateComponents *weekdayComponents = [gregorian components:NSWeekdayCalendarUnit fromDate:_date];
int _weekday = (int)[weekdayComponents weekday];
判断用户是否允许通知
+(BOOL)isAllowedNotification {
    //iOS8 check if user allow notification
    float sysVer = [[[UIDevice currentDevice] systemVersion] floatValue];
    if (sysVer >= 8) {// system is iOS8
        UIUserNotificationSettings *setting = [[UIApplication sharedApplication] currentUserNotificationSettings];
        if (UIUserNotificationTypeNone != setting.types) {
            return YES;
        }   
} else {//iOS7
        UIRemoteNotificationType type = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
       if(UIRemoteNotificationTypeNone != type)
           return YES;
   }   
return NO;
}
在工程中配置PCH文件,添加 $(TARGET_NAME)/$(TARGET_NAME).pch
添加PCH
刷新tableview的某个区
NSMutableIndexSet *set = [NSMutableIndexSet indexSet];
    [set addIndex:3];
    [set addIndex:4];
    [_tableView reloadSections:set withRowAnimation:UITableViewRowAnimationNone];
动画 - 旋转

点击旋转到上面,再点击再旋转到下方

-(void)transformAnimationWithfrom:(float)from To:(float)To image:(UIImageView *)image {    
  CABasicAnimation *animation =  [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];    //默认是顺时针效果,若将fromValue和toValue的值互换,则为逆时针效果    
  animation.fromValue = [NSNumber numberWithFloat:from];    
  animation.toValue =  [NSNumber numberWithFloat:To];   
  animation.duration  = 0.5;    
  animation.autoreverses = NO;    
  animation.fillMode =kCAFillModeForwards;    
  animation.repeatCount = 1;    
  [image.layer addAnimation:animation forKey:nil];}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容

  • 翻译自“Auto Layout Guide”。 2 自动布局细则手册 2.1 堆栈视图 接下来的章节展示了如何使用...
    lakerszhy阅读 1,851评论 3 9
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,580评论 18 139
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,345评论 0 17
  • 工作了两年多,一直有个“坏习惯”,就是将工作中遇到的一些问题、技巧或心得记在印象笔记里面,按理来说,作为一个...
    F森阅读 1,980评论 3 26
  • 咖啡还是老样子。 今天嗓子状态还可以,前两天我刚试着录一首歌,也不知道是不是因为嗓子的状态不太一样?反正和以前的录...
    冯毓阅读 147评论 0 0