iOS小總結(jié)以及犯的錯(cuò)誤

早就想弄一個(gè)出來,直到今天才真正寫出來... 以后有什么不懂得或者需要記錄的會發(fā)到這里面。持續(xù)更新!

方法:

//系統(tǒng)寬
#define SCREEN_WIDTH   [[UIScreen mainScreen] bounds].size.width
//系統(tǒng)高
#define SCREEN_HEIGHT  [[UIScreen mainScreen] bounds].size.height

#define BASE_WIDTH 414.0f
#define BASE_HEIGHT 736.0f

//按比例計(jì)算的寬
#define UNIT_WIDTH(NSInteger) (double)NSInteger / BASE_WIDTH  * SCREEN_WIDTH
//按比例計(jì)算的高
#define UNIT_HEIGHT(NSInteger) (double)NSInteger / BASE_HEIGHT * SCREEN_HEIGHT
//系統(tǒng)字體大小
#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;
}
//用的時(shí)候
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];
//點(diǎn)擊截屏圖片的時(shí)候讓手勢失效,也就是說點(diǎn)擊的時(shí)候圖片時(shí)點(diǎn)擊不了的。
- (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%'"];
}
//文字兩頭對齊實(shí)現(xiàn)方法
第一步:新建一個(gè)名為labelForText(名稱自己取)的UILabel的類并#import <CoreText/CoreText.h>
第二步:在類的.h出寫調(diào)用方法 - (void)changeLabel; 并在.m文件里復(fù)制下面的方法
- (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 “l(fā)abelForText”
    labelForText *label = [[labelForText alloc]   initWithFrame:CGRectMake(20, 180, 120, 30)];
    label.text = @"測試一下試試";
    label.textColor = [UIColor orangeColor];
    [label changeLabel];
    [self.view addSubview:label];

總結(jié):
1.項(xiàng)目的總體采用的顏色最好設(shè)置成宏定義,方便以后直接改。

2.懶加載之后,所有用到的地方都需要以self開頭,不然不會調(diào)用懶加載里的東西。

3.升級到xcode8之后,運(yùn)行的時(shí)候會出現(xiàn)一堆file missing警告,消除的辦法就是Xcode->Preferences->Source->Enable Source Control 把勾勾去掉,之后警告就會消失。(但并不推薦這種)

4.SDWebImage的實(shí)現(xiàn)原理:

首先,SDWebImage用于獲取網(wǎng)絡(luò)圖片。所以就需要有URL,沒有URL就什么都獲取不到。
⑴ SDWebImage并不是直接去請求網(wǎng)絡(luò),而是去圖片緩存里去看有沒有和URL相關(guān)的圖片,有則直接返回image中,沒有就進(jìn)行下一步。
⑵如果當(dāng)前圖片緩存中沒有,SDWebImage依舊不會請求網(wǎng)絡(luò),而是檢查沙盒中是否存在,如存在則返回到image中,然后在進(jìn)行第一步的內(nèi)容。
⑶如果沙盒中也沒有的話,則先顯示占位圖。然后根據(jù)圖片的URL的下載隊(duì)列緩存看看是否正在下載,如果下載的話,會等待,避免二次下載。如不存在則創(chuàng)建隊(duì)列,下載完之后先刪除隊(duì)列然后在把image加入到圖片緩存中。
⑷最后刷新UI,將image存入沙盒緩存。
WX20170807-110757.png

5.跳轉(zhuǎn)到指定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];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容