美文网首页
iOS开发常用代码汇总

iOS开发常用代码汇总

作者: GeekPwn_S | 来源:发表于2016-11-17 15:07 被阅读40次

    1.UITableView****点击段头收齐放下、****cell****侧滑删除****Demo —> /****Work / text1Demo**

    2.****改变****UITextField****的****placeholder字体的颜色

    {
        textField.placeholder = @"username is in here!";
        [textField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];
        [textField setValue:[UIFont boldSystemFontOfSize:16] forKeyPath:@"_placehold'];
    }
    

    3.lable里的字体设置不同颜色和字体大小

    {
    NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"Using NSAttributed String,try your best to test attributed string text"];
    [str addAttribute:NSForegroundColorAttributeName
    value:[UIColor blueColor]
    range:NSMakeRange(0,5)];
    [str addAttribute:NSForegroundColorAttributeName
    value:[UIColor redColor]
    range:NSMakeRange(6,12)];
    [str addAttribute:NSForegroundColorAttributeName
    value:[UIColor greenColor]
    range:NSMakeRange(19,6)];
    [str addAttribute:NSFontAttributeName
    value:[UIFont fontWithName:@"Arial" size:30.0]
    range:NSMakeRange(0, 5)];
    [str addAttribute:NSFontAttributeName
    value:[UIFont fontWithName:@"Arial" size:30.0]
    range:NSMakeRange(6, 12)];
    [str addAttribute:NSFontAttributeName
    value:[UIFont fontWithName:@"Arial" size:30.0]
    range:NSMakeRange(19, 6)];
    UILabel *attrLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 150, 320 - 40, 90)];
    attrLabel.attributedText = str;
    attrLabel.numberOfLines = 0;
    }
    

    iOS UIFont字体名字大全(http://blog.sina.com.cn/s/blog_6c9d5da50101fujl.html)

    4. Masonry的使用(http://www.cocoachina.com/ios/20141219/10702.html)**

    Masonry支持哪一些属性

    @property (nonatomic, strong, readonly) MASConstraint *left;
    @property (nonatomic, strong, readonly) MASConstraint *top;
    @property (nonatomic, strong, readonly) MASConstraint *right;
    @property (nonatomic, strong, readonly) MASConstraint *bottom;
    @property (nonatomic, strong, readonly) MASConstraint *leading;
    @property (nonatomic, strong, readonly) MASConstraint *trailing;
    @property (nonatomic, strong, readonly) MASConstraint *width;
    @property (nonatomic, strong, readonly) MASConstraint *height;
    @property (nonatomic, strong, readonly) MASConstraint *centerX;
    @property (nonatomic, strong, readonly) MASConstraint *centerY;
    @property (nonatomic, strong, readonly) MASConstraint *baseline;
    

    这些属性与NSLayoutAttrubute的对照表如下
    其中leading与left trailing与right在正常情况下是等价的但是当一些布局是从右至左时(比如阿拉伯文?没有类似的经验)则会对调换句话说就是基本可以不理不用用left和right就好了
    在Masonry中能够添加autolayout约束有三个函数

    - (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *make))block;
    - (NSArray *)mas_updateConstraints:(void(^)(MASConstraintMaker *make))block;
    - (NSArray *)mas_remakeConstraints:(void(^)(MASConstraintMaker *make))block;
    

    mas_makeConstraints只负责新增约束Autolayout不能同时存在两条针对于同一对象的约束否则会报错
    mas_updateConstraints针对上面的情况会更新在block中出现的约束不会导致出现两个相同约束的情况
    mas_remakeConstraints则会清除之前的所有约束仅保留最新的约束
    三种函数善加利用就可以应对各种情况了

    5.iOS****调用系统功能****http://www.jianshu.com/p/78db0e46d954

    6.****去掉****UItableview headerview黏性

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
       if (scrollView == _tableView) {
          CGFloat sectionHeaderHeight = 36;
          if (scrollView.contentOffset.y <= sectionHeaderHeight && scrollView.contentOffset.y >= 0) {
              scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
          } else if (scrollView.contentOffset.y >= sectionHeaderHeight) {
              scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0);
          }
       }
    }
    

    说明
    sectionHeaderHeight的值要根据自己的而定
    _tableView如果一个类里有多个表格,要明确指明要去掉哪一个表格头的粘性


    7.iOS****完整****App资源收集

    http://www.henishuo.com/ios-app-fully-code/


    8.****获取文件大小****fileSize &&文件删除

    NSDictionary *fileAttributes = [[NSFileManager defaultManager] fileAttributesAtPath:path traverseLink:YES];
    unsigned long long length = [fileAttributes fileSize];
    float ff = length/1024.0/1024.0;
    NSLog(@"length== %.2f",ff);
    ---------------------
    if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {
    //如果存在就删除
    [[NSFileManager defaultManager] removeItemAtPath: path error:nil];
    }
    

    9.获取本机当前语言

    /**  *得到本机现在用的语言* en:英文zh-Hans:简体中文zh-Hant:繁体中文ja:日本......  */
    + (NSString*)getPreferredLanguage {
    NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
    NSArray* languages = [defs objectForKey:@"AppleLanguages"];
    NSString* preferredLang = [languages objectAtIndex:0];
    NSLog(@"Preferred Language:%@", preferredLang);
    **return **preferredLang;
    }
    

    10.图片拉伸

    //加载图片
    UIImage *image = [UIImage imageNamed:@"chat_send_nor"];
    //设置端盖的值
    CGFloat top = image.size.height * 0.5;
    CGFloat left = image.size.width * 0.5;
    CGFloat bottom = image.size.height * 0.5;
    CGFloat right = image.size.width * 0.5;
    //设置端盖的值
    UIEdgeInsets edgeInsets = UIEdgeInsetsMake(top, left, bottom, right);
    //设置拉伸的模式
    UIImageResizingMode mode = UIImageResizingModeStretch;
    //拉伸图片
    UIImage *newImage = [image resizableImageWithCapInsets:edgeInsets resizingMode:mode];
    //设置按钮的背景图片
    [btn setBackgroundImage:newImage forState:UIControlStateNormal];
    
    ####11.UIAlertView****的字体大小和颜色自定义**
    - (IBAction)showBigAlert:(id)sender {
    UIAlertView* find = [[UIAlertView alloc] initWithTitle:@"big size view" message:@"do you see it" delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil, nil];
    //[find setDelegate:self];
    /*
    UIAlertView *find = [[UIAlertView alloc] initWithFrame:CGRectMake(5, 20, 320,700)];
    find.title=@"big size view" ;
    find.message=@"some message";
    */
    [find show];
    [find release];
    }
    
    //- (void)willPresentAlertView:(UIAlertView *)alertView
    -(void)willPresentAlertView:(UIAlertView *)alertView {
    [alertView setFrame:CGRectMake(1, 20, 1000, 600)];
    for( UIView * view in alertView.subviews )
    {
    if( [view isKindOfClass:[UILabel class]] )
    {
    UILabel* label = (UILabel*) view;
    label.textAlignment = UITextAlignmentLeft;
    label.font=[UIFont fontWithName:@"STHeitiSC-Medium" size:18];
    label.textColor=[UIColor greenColor];
    }
    
    if ( [view isKindOfClass:[UIButton class]] ){
    }
    

    12.UITextField中输入文字或英文返回文本长度

    - (void)textFieldDidBeginEditing:(UITextField *)textField{
              [textField addTarget:self action:@selector(textFieldEditChanged:) forControlEvents:UIControlEventEditingChanged];
    }
    
    - (void)textFieldEditChanged:(UITextField *)textField{
       if (textField.text.length == 0) {
          [_sendButton setTitleColor:LIGHTGAYCOLOR forState:(UIControlStateNormal)];
    _sendButton.userInteractionEnabled = NO; 
       }else{
          [_sendButton setTitleColor:SUBJECTCOLOR forState:(UIControlStateNormal)];
    _sendButton.userInteractionEnabled = YES; 
       }
    }
    

    13.JSON的 “” 转换为 nil

    使用AFNetworking时,使用

    AFJSONResponseSerializer *response = [[AFJSONResponseSerializer alloc] init];
    response.removesKeysWithNullValues = YES;
    _sharedClient.responseSerializer = response;
    

    这个参数removesKeysWithNullValues可以将null的值删除,那么就Value为nil了

    14.忽略静音开关

    AVAudioSession *audioSession = [AVAudioSession sharedInstance];
    [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
    

    15.iOS中几种定时器

    CADisplayLink

    1)创建方法

            self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(handleDisplayLink:)];
            [self.displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
    

    2)停止方法

             [self.displayLink invalidate];
             self.displayLink = nil;
    

    当把CADisplayLink对象add到runloop中后,selector就能被周期性调用,类似于重复的NSTimer被启动了;执行invalidate操作时,CADisplayLink对象就会从runloop中移除,selector调用也随即停止,类似于NSTimer的invalidate方法。

    3)特性
    屏幕刷新时调用

    CADisplayLink是一个能让我们以和屏幕刷新率同步的频率将特定的内容画到屏幕上的定时器类。CADisplayLink以特定模式注册到runloop后,每当屏幕显示内容刷新结束的时候,runloop就会向CADisplayLink指定的target发送一次指定的selector消息,CADisplayLink类对应的selector就会被调用一次。所以通常情况下,按照iOS设备屏幕的刷新率60次/秒

    相关文章

      网友评论

          本文标题:iOS开发常用代码汇总

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