Xcode常用方法总结

来源:互联网 发布:淘宝出国旅游医疗保险 编辑:程序博客网 时间:2024/06/05 23:43

1、UIView 边框效果

  CALayer *layer = [_myImageView layer];  

  [layer setCornerRadius:10];   //边框圆角
  [layer setMasksToBounds:YES];//设置边框可见  
  layer.borderColor = [[UIColor yellowColor] CGColor];  
  [layer setBorderWidth:1];  
  [control addSubview:_myImageView];

2、UIView的阴影效果

  CALayer *layer = [imageView layer];  
  layer.shadowOffset = CGSizeMake(0, 3);//shadowOffset阴影偏移,x向右偏移4,y向下偏移4,默认(0, -3),这个跟    shadowRadius配合使用  
  layer.shadowRadius = 5.0;       //设置阴影的弧度
  layer.shadowColor = [UIColor blackColor].CGColor;
  layer.shadowOpacity = 0.8;   //透明度

3、Block使用中的一些疑问解答

  http://www.cocoachina.com/ios/20120514/4247.html

  1. int number = 1;
  _block = ^(){
    NSLog(@"number %d", number);
  };
  number = 2;
  _block();   会把number当成常量变量编码到block中,使用__block进行修饰,

  2. block在创建的时候,它的内存是分配在栈(stack)上,而不是在堆(heap)上;

    它本身的作用域是创建的时候的作用域,一旦在创建时候的作用域外面调用block将导致程序崩溃。

    解决这个问题的方法就是在创建完block的时候需要调用copy的方法。copy会把block从栈上移动到堆上,那么就可以在其他     地方使用这个block

  3. 在block中使用self的时候,使用__block ViewController *controller = self; 修改,


4、获取文件夹的大小:

  http://blog.sina.com.cn/s/blog_6d01cce30101hbk7.html

  通常用于删除缓存的时,计算缓存大小

  //单个文件的大小

  -(long long) fileSizeAtPath:(NSString*) filePath{

     NSFileManager* manager =[NSFileManager defaultManager];

     if ([managerfileExistsAtPath:filePath]){

        return [[manager attributesOfItemAtPath:filePatherror:nil] fileSize];

     }

     return 0;

  }

  //遍历文件夹获得文件夹大小,返回多少M

  -(float ) folderSizeAtPath:(NSString*) folderPath{

      NSFileManager* manager =[NSFileManager defaultManager];

      if (![managerfileExistsAtPath:folderPath]) return 0;

      NSEnumerator*childFilesEnumerator = [[manager subpathsAtPath:folderPath]objectEnumerator];

      NSString* fileName;

      long long folderSize = 0;

      while ((fileName =[childFilesEnumerator nextObject]) != nil){

         NSString* fileAbsolutePath = [folderPathstringByAppendingPathComponent:fileName];

         folderSize += [selffileSizeAtPath:fileAbsolutePath];

      }

      returnfolderSize/(1024.0*1024.0);

  }


5、#pragma mark - 限制输入的汉字个数

  [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFiledEditChanged:)    name:@"UITextFieldTextDidChangeNotification" object:nil];

  -(void)textFiledEditChanged:(NSNotification *)obj{
     UITextField *textField = (UITextField *)obj.object;
     NSString *toBeString = textField.text;
     NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; // 键盘输入模式
     if ([lang isEqualToString:@"zh-Hans"]) { // 简体中文输入,包括简体拼音,健体五笔,简体手写
         UITextRange *selectedRange = [textField markedTextRange];
         //获取高亮部分
         UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
         // 没有高亮选择的字,则对已输入的文字进行字数统计和限制
         if (!position) {
             if (toBeString.length > ReviewNumber) {
                 textField.text = [toBeString substringToIndex:ReviewNumber];
             }
         }
         // 有高亮选择的字符串,则暂不对文字进行统计和限制
         else{       
        }
     }
     // 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况
     else{
         if (toBeString.length > ReviewNumber) {
               textField.text = [toBeString substringToIndex:ReviewNumber];
         }
     }
 }

//限制输入多少个字符

if ([toBeString lengthOfBytesUsingEncoding:NSUTF8StringEncoding] > ReviewNumber) {
                    [OMGToast showWithText:[NSString stringWithFormat:@"最多输入%ld个字符", (long)ReviewNumber]];
                    for (int i = ((int)toBeString.length - 1); i > 0; i--) {
                        NSString *str = [toBeString substringToIndex:i];
                        if ([str lengthOfBytesUsingEncoding:NSUTF8StringEncoding] <= ReviewNumber) {
                            textField.text = str;
                            break;
                        }
                    }
                }

6、判断一个对象是什么对象类型

  -(void) onResp:(BaseResp*)resp

      if([resp isKindOfClass:[SendMessageToWXResp class]])

        nsstring * className = @“seenMessageView"

        Class class = NSClassFromString(className);


7、直接跳到 设置里面的定位授权页

  if (IsiOS8Later) {

       [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

        }


8、改变UITableView的header、footer背景颜色,这是个很常见的问题。之前知道的一般做法是,通过实现tableView: viewForHeaderInSection:返回一个自定义的View,里面什么都不填,只设背景颜色。但是今天发现一个更简洁的做法

对于iOS 6及以后的系统,实现这个新的delegate函数即可:

- (void)tableView:(UITableView *)tableView willDisplayFooterView:(UIView *)view forSection:(NSInteger)section {    view.tintColor = [UIColor clearColor];}

还可以改变文字的颜色:

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section

{

   UITableViewHeaderFooterView *footer = (UITableViewHeaderFooterView *)view;

    [footer.textLabelsetFont:[UIFontsystemFontOfSize:14.0]];

}


9、定时器

// 拿到外界传来的时间戳

- (void)setTimestamp:(NSInteger)timestamp{

    _timestamp = timestamp;

    if (_timestamp !=0) {

       timer =[NSTimerscheduledTimerWithTimeInterval:1target:selfselector:@selector(timer:)userInfo:nilrepeats:YES];

    }

}

-(void)timer:(NSTimer*)timerr{

    _timestamp--;

    [selfgetDetailTimeWithTimestamp:_timestamp];

    if (_timestamp ==0) {

        [timerinvalidate];

        timer =nil;

        // 执行block回调

        self.timerStopBlock();

    }

}

- (void)getDetailTimeWithTimestamp:(NSInteger)timestamp{

    NSInteger ms = timestamp; //

    NSInteger ss =1;

    NSInteger mi = ss *60;

    NSInteger hh = mi *60;

    NSInteger dd = hh *24;

    // 剩余的

    NSInteger day = ms / dd;//

    NSInteger hour = (ms - day * dd) / hh;//

    NSInteger minute = (ms - day * dd - hour * hh) / mi;//

    NSInteger second = (ms - day * dd - hour * hh - minute * mi) / ss;//

//    NSLog(@"%zd:%zd:%zd:%zd",day,hour,minute,second);

}


10、使用lipo合并.framework 文件

注意事项:KS3YunSDK.framework/KS3YunSDK   后边要加上KS3YunSDK,这样才是正确的方法。

11、取消延迟执行的方法

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(isSignIn) object:nil];
                    [self performSelector:@selector(isSignIn) withObject:nil afterDelay:1.0];


12、获取图片的GPS信息

  1.  //获取图片的NSURL 来源于AssetsLibrary.framework  #import <AssetsLibrary/AssetsLibrary.h>  
  2.     NSURL *url = [info objectForKey:UIImagePickerControllerReferenceURL];  
  3.       
  4.     //ALAssetsLibrary 获取图片和视频  
  5.     ALAssetsLibrary *library = [[ALAssetsLibrary alloc]init];  
  6.       
  7.     //根据url获取指定的图片  如果获取到了资源执行resultBlock,否则执行failureBlock  
  8.     //ALAsset实例 代表一个图片或者视频  
  9.     [library assetForURL:url resultBlock:^(ALAsset *asset){  
  10.         //defaultRepresentation 获取资源文件的默认属性  
  11.         //metadata 获取数据的数据,就是在默认属性中的数据,称之为元数据  
  12.         NSDictionary *imageData = [[NSMutableDictionary alloc]initWithDictionary:asset.defaultRepresentation.metadata];  
  13.         //kCGImagePropertyGPSDictionary 关于GPS的字典数据  来源于ImageIO.framework  #import <ImageIO/ImageIO.h>  
  14.         NSDictionary *gpsData = [imageData objectForKey:(NSString *)kCGImagePropertyGPSDictionary];  
  15.         //打印纬度  
  16.         NSLog(@"%@",[gpsData objectForKey:@"Altitude"]);  
  17.     }failureBlock:^(NSError *error){  
  18.         NSLog(@"error:%@",error);  
  19.     }]; 

0 0
原创粉丝点击