美文网首页
iOS小总结以及犯的错误

iOS小总结以及犯的错误

作者: 曹小宇丶 | 来源:发表于2017-08-01 15:01 被阅读43次

    早就想弄一个出来,直到今天才真正写出来... 以后有什么不懂得或者需要记录的会发到这里面。持续更新!

    方法:

    //系统宽
    #define SCREEN_WIDTH   [[UIScreen mainScreen] bounds].size.width
    //系统高
    #define SCREEN_HEIGHT  [[UIScreen mainScreen] bounds].size.height
    
    #define BASE_WIDTH 414.0f
    #define BASE_HEIGHT 736.0f
    
    //按比例计算的宽
    #define UNIT_WIDTH(NSInteger) (double)NSInteger / BASE_WIDTH  * SCREEN_WIDTH
    //按比例计算的高
    #define UNIT_HEIGHT(NSInteger) (double)NSInteger / BASE_HEIGHT * SCREEN_HEIGHT
    
    //系统字体大小
    #define SYS_FONT(num) [UIFont systemFontOfSize:UNIT_HEIGHT(num)]
    
    //弱引用
    #define WS(type)  __weak typeof(type) weak##type = type;
    
    //字典排序
    NSArray*sortArray = [keyArray sortedArrayUsingComparator:^NSComparisonResult(id_Nonnull obj1,id_Nonnull obj2) {
              return[obj1 compare:obj2 options:NSNumericSearch];   
     }];
    
    // 截屏
    -(UIImage *)captureImageFromView:(UIView *)view{
        CGRect screenRect = [view bounds];
        UIGraphicsBeginImageContextWithOptions((screenRect.size), YES, 0);
        CGContextRef ctx = UIGraphicsGetCurrentContext();
        [view.layer renderInContext:ctx];
    
        UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return image;
    }
    //用的时候
    UIImage *image = [self captureImageFromView:self.view];
    
    //保存到相册
    #import <AssetsLibrary/AssetsLibrary.h>
    ALAssetsLibrary * library = [ALAssetsLibrary new];
    NSData * data = UIImageJPEGRepresentation(self.image, 1.0);
    [library writeImageDataToSavedPhotosAlbum:data metadata:nil completionBlock:nil];
    
    //点击截屏图片的时候让手势失效,也就是说点击的时候图片时点击不了的。
    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
        if ([touch.view isDescendantOfView:self.viewForBack  (你自己的view)]) {
            return NO;
        }
        return YES;
    }
    
    //webview加载html页面 字体过小的解决办法
    - (void)webViewDidFinishLoad:(UIWebView *)webView {
        [webView  stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '100%'"];
    }
    
    //文字两头对齐实现方法
    第一步:新建一个名为labelForText(名称自己取)的UILabel的类并#import <CoreText/CoreText.h>
    第二步:在类的.h出写调用方法 - (void)changeLabel; 并在.m文件里复制下面的方法
    - (void)changeLabel{
        CGRect textSize = [self.text boundingRectWithSize:CGSizeMake(self.frame.size.width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine |NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName : self.font} context:nil];
        CGFloat margin = (self.frame.size.width - textSize.size.width) / (self.text.length - 1);
        
        NSNumber *number = [NSNumber numberWithFloat:margin];
        NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc]initWithString:self.text];
        [attributeString addAttribute:(id)kCTKernAttributeName value:number range:NSMakeRange(0, self.text.length - 1)];
        self.attributedText = attributeString;
    }
    第三步:引用 #import “labelForText”
        labelForText *label = [[labelForText alloc]   initWithFrame:CGRectMake(20, 180, 120, 30)];
        label.text = @"测试一下试试";
        label.textColor = [UIColor orangeColor];
        [label changeLabel];
        [self.view addSubview:label];
    

    总结:
    1.项目的总体采用的颜色最好设置成宏定义,方便以后直接改。

    2.懒加载之后,所有用到的地方都需要以self开头,不然不会调用懒加载里的东西。

    3.升级到xcode8之后,运行的时候会出现一堆file missing警告,消除的办法就是Xcode->Preferences->Source->Enable Source Control 把勾勾去掉,之后警告就会消失。(但并不推荐这种)

    4.SDWebImage的实现原理:

    首先,SDWebImage用于获取网络图片。所以就需要有URL,没有URL就什么都获取不到。
    ⑴ SDWebImage并不是直接去请求网络,而是去图片缓存里去看有没有和URL相关的图片,有则直接返回image中,没有就进行下一步。
    ⑵如果当前图片缓存中没有,SDWebImage依旧不会请求网络,而是检查沙盒中是否存在,如存在则返回到image中,然后在进行第一步的内容。
    ⑶如果沙盒中也没有的话,则先显示占位图。然后根据图片的URL的下载队列缓存看看是否正在下载,如果下载的话,会等待,避免二次下载。如不存在则创建队列,下载完之后先删除队列然后在把image加入到图片缓存中。
    ⑷最后刷新UI,将image存入沙盒缓存。
    
    WX20170807-110757.png

    5.跳转到指定QQ号

    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero];
      NSURL *url = [NSURL URLWithString:@"mqq://im/chat?chat_type=wpa&uin=123456789(QQ号码)&version=1&src_type=web"];
      NSURLRequest *request = [NSURLRequest requestWithURL:url];
      webView.delegate = self;
      [webView loadRequest:request];
      [self.view addSubview:webView];
    

    相关文章

      网友评论

          本文标题:iOS小总结以及犯的错误

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