国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > iOS > 正文

ios 系統(tǒng)更新特性

2019-11-06 09:37:41
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

iOS6-10新特性總結(jié)

iOS 6

1、廢除了viewDidUnload,viewDidUnload

收到內(nèi)存警告需要到didReceiveMemoryWarning中處理

【小技巧】:

iOS6以后的內(nèi)存處理方式

[objc] view plain copy 在CODE上查看代碼片-(void)didReceiveMemoryWarning      {              [super didReceiveMemoryWarning];//即使沒(méi)有顯示在window上,也不會(huì)自動(dòng)的將self.view釋放。              // Add code to clean up any of your own resources that are no longer necessary.                 // 此處做兼容處理需要加上ios6.0的宏開(kāi)關(guān),保證是在6.0下使用的,6.0以前屏蔽以下代碼,否則會(huì)在下面使用self.view時(shí)自動(dòng)加載viewDidLoad               if ([self.view window] == nil)//是否是正在使用的視圖               {                     // Add code to - (BOOL)shouldAutorotate;    - (NSUInteger)supportedInterfaceOrientations;    

還需要在info.plist進(jìn)行配置

3、UISwitch可以設(shè)置開(kāi)關(guān)顏色和背景圖[objc] view%20plain copy @property (nonatomic,  retain) UIColor *tintColor;  @property (nonatomic,  retain) UIColor *thumbTintColor;   @property (nonatomic,  retain) UIImage *onImage;   @property (nonatomic,  retain) UIImage *offImage;  4、UINavigationBar新增了,設(shè)置陰影圖片屬性

[objc] view%20plain copy @property (nonatomic, retain) UIImage *shadowImage;  5、UIImage可以在設(shè)置圖片可以進(jìn)行縮放

[objc] view%20plain copy + (UIImage *)imageWithData:(NSData *)data scale:(CGFloat)scale;   - (id)initWithData:(NSData *)data scale:(CGFloat)scale;  6、新增UIRefreshControl

【小技巧】:與UITableView配合實(shí)現(xiàn)下拉刷新

7、UICollectionView【小技巧】:可以實(shí)現(xiàn)瀑布流

8、Autolayout9、語(yǔ)法相關(guān)[objc] view%20plain copy NSNumber* number = @(3);  NSArray* titles = @[@"a",@"b"];  NSDictionary* dict = @{@"a":@"b"};  iOS%2071、取消了udid和mac地址訪問(wèn)提供了UUID,IDFA,IDFV,OpenUDID

【小技巧】:

UUID:

UUID是Universally%20Unique%20Identifier的縮寫(xiě),中文意思是通用唯一識(shí)別碼。它是讓分布式系統(tǒng)中的所有元素,都能有唯一的辨識(shí)資訊,而不需要透過(guò)中央控制端來(lái)做辨識(shí)資訊的指定。這樣,每個(gè)人都可以建立不與其它人沖突的UUID。在此情況下,就不需考慮數(shù)據(jù)庫(kù)建立時(shí)的名稱(chēng)重復(fù)問(wèn)題。蘋(píng)果公司建議使用UUID為應(yīng)用生成唯一標(biāo)識(shí)字符串。

開(kāi)發(fā)者可以在應(yīng)用第一次啟動(dòng)時(shí)調(diào)用一 次,然后將該串存儲(chǔ)起來(lái),替代UDID來(lái)使用。但是,如果用戶刪除該應(yīng)用再次安裝時(shí),又會(huì)生成新的字符串,所以不能保證唯一識(shí)別該設(shè)備。使用UUID,就要考慮應(yīng)用被刪除后再重新安裝時(shí)的處理。一個(gè)解決的辦法是:UUID一般只生成一次,保存在iOS系統(tǒng)里面,如果應(yīng)用刪除了,重裝應(yīng)用之后它的UUID還是一樣的,除非系統(tǒng)重置 。但是不能保證在以后的系統(tǒng)升級(jí)后還能用(如果系統(tǒng)保存了該信息就能用)。

IDFA:

[objc] view%20plain copy #import <AdSupport/AdSupport.h>    NSString *adId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];  

廣告標(biāo)示符是iOS%206中另外一個(gè)新的方法,提供了一個(gè)方法advertisingIdentifier,通過(guò)調(diào)用該方法會(huì)返回一個(gè)NSUUID實(shí)例,最后可以獲得一個(gè)UUID,由系統(tǒng)存儲(chǔ)著的。不過(guò)即使這是由系統(tǒng)存儲(chǔ)的,但是有幾種情況下,會(huì)重新生成廣告標(biāo)示符。如果用戶完全重置系統(tǒng)((設(shè)置程序 -> 通用 -> 還原 -> 還原位置與隱私) ,這個(gè)廣告標(biāo)示符會(huì)重新生成。另外如果用戶明確的還原廣告(設(shè)置程序-> 通用 -> 關(guān)于本機(jī) -> 廣告 -> 還原廣告標(biāo)示符) ,那么廣告標(biāo)示符也會(huì)重新生成。關(guān)于廣告標(biāo)示符的還原,有一點(diǎn)需要注意:如果程序在后臺(tái)運(yùn)行,此時(shí)用戶“還原廣告標(biāo)示符”,然后再回到程序中,此時(shí)獲取廣 告標(biāo)示符并不會(huì)立即獲得還原后的標(biāo)示符。必須要終止程序,然后再重新啟動(dòng)程序,才能獲得還原后的廣告標(biāo)示符。

在同一個(gè)設(shè)備上的所有App都會(huì)取到相同的值,是蘋(píng)果專(zhuān)門(mén)給各廣告提供商用來(lái)追蹤用戶而設(shè)的,用戶可以在 設(shè)置|隱私|廣告追蹤 里重置此id的值,或限制此id的使用,故此id有可能會(huì)取不到值,但好在Apple默認(rèn)是允許追蹤的,而且一般用戶都不知道有這么個(gè)設(shè)置,所以基本上用來(lái)監(jiān)測(cè)推廣效果,是戳戳有余了。

注意:由于idfa會(huì)出現(xiàn)取不到的情況,故絕不可以作為業(yè)務(wù)分析的主id,來(lái)識(shí)別用戶

IDFV:

[objc] view%20plain copy NSString *idfv = [[[UIDevice currentDevice] identifierForVendor] UUIDString];  Vendor標(biāo)示符是給Vendor標(biāo)識(shí)用戶用的,每個(gè)設(shè)備在所屬同一個(gè)Vender的應(yīng)用里,都有相同的值。其中的Vender是指應(yīng)用提供商,但準(zhǔn)確點(diǎn)說(shuō),是通過(guò)BundleID的DNS反轉(zhuǎn)的前兩部分進(jìn)行匹配,如果相同就是同一個(gè)Vender,例如對(duì)于com.somecompany.appone,com.somecompany.aunsigned char result[16];   const charchar *cStr = [[[NSProcessInfo processInfo] globallyUniqueString] UTF8String];   CC_md5( cStr, strlen(cStr), result );    _openUDID = [NSString stringWithFormat: @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%08x", result[0], result[1], result[2], result[3], result[4], result[5], result[6], result[7], result[8], result[9], result[10], result[11],result[12], result[13], result[14], result[15],  arc4random() % 4294967295];   每臺(tái)iOS設(shè)備的OpenUDID是通過(guò)第一個(gè)帶有OpenUDID%20SDK包的App生成,如果你完全刪除全部帶有OpenUDID%20SDK包的App(比如恢復(fù)系統(tǒng)等),那么OpenUDID會(huì)重新生成,而且和之前的值會(huì)不同,相當(dāng)于新設(shè)備;

優(yōu)點(diǎn)是沒(méi)有用到MAC地址;不同設(shè)備能夠獲取各自唯一的識(shí)別碼,保證了唯一性,可以用于以往UDID的相關(guān)用途;從代碼分析OpenUDID的獲取,識(shí)別碼獲取方便并且保存謹(jǐn)慎。缺點(diǎn)是當(dāng)將設(shè)備上所有使用了OpenUDID方案的應(yīng)用程序刪除,且設(shè)備關(guān)機(jī)重啟,xcode徹底清除并重啟,重裝應(yīng)用程序去獲取OpenUDID,此時(shí)OpenUDID變化,與之前不一樣了,所有OpenUDID應(yīng)用卸載后,由UUIImageRenderingModeAutomatic // 根據(jù)圖片的使用環(huán)境和所處的繪圖上下文自動(dòng)調(diào)整渲染模式。   UIImageRenderingModeAlwaysOriginal // 始終繪制圖片原始狀態(tài),不使用Tint Color。   UIImageRenderingModeAlwaysTemplate // 始終根據(jù)Tint Color繪制圖片,忽略圖片的顏色信息。   

renderingMode屬性的默認(rèn)值是UIImageRenderingModeAutomatic,即UIImage是否使用Tint%20Color取決于它顯示的位置。

【小技巧】:

[objc] view%20plain copy UIImage *img = [UIImage imageNamed:@"myimage"];   img = [img imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];   

5、tintcolor%20VS%20barTintColor有些類(lèi),比如說(shuō)UINaviagtionBar,UISearchBar,UITabBar以及UIToolbar已經(jīng)有了這么命名的屬性。他們現(xiàn)在有了一個(gè)新的屬性:barTintColor。

【小技巧】:

為了避免使用新屬性的時(shí)候犯錯(cuò)誤,如果你的appp需要支持iOS6以前的系統(tǒng)的時(shí)候,請(qǐng)檢查一下。

[objc] view%20plain copy UINavigationBar *bar = self.navigationController.navigationBar;   UIColor *color = [UIColor greenColor];   if ([bar respondsToSelector:@selector(setBarTintColor:)]) { // iOS 7+       bar.barTintColor = color;   } else {     bar.tintColor = color;   }   

6、UIButtonTypeRoundRectUIButtonTypeSystem替代7、新增檢查無(wú)線路由是否可用在iOS7當(dāng)中,你可以通過(guò)AirPlay,藍(lán)牙或是其他的虛線機(jī)制了解是否有一個(gè)遠(yuǎn)程的設(shè)備可用。了解它的話,就可以讓你的app在恰當(dāng)?shù)臅r(shí)候做恰當(dāng)?shù)氖拢热缯f(shuō),在沒(méi)有遠(yuǎn)程設(shè)備的時(shí)候就不顯示AirPlay的icon。

[objc] view%20plain copy @property (nonatomic, readonly) BOOL wirelessRoutesAvailable; //  是否有設(shè)備可以連接的無(wú)線線路?   @property (nonatomic, readonly) BOOL wirelessRouteActive; // 設(shè)備現(xiàn)在是否連接上了網(wǎng)絡(luò)   NSString *const MPVolumeViewWirelessRoutesAvailableDidChangeNotification;   NSString *const MPVolumeViewWirelessRouteActiveDidChangeNotification;    

8、更詳細(xì)蜂窩網(wǎng)絡(luò)信息在iOS7之前,是使用Reachability來(lái)檢測(cè)設(shè)備是否連接到WWAN或是Wifi的。iOS7在這個(gè)基礎(chǔ)上更進(jìn)了一步,它會(huì)告訴你的設(shè)備連接上的是那種蜂窩網(wǎng)絡(luò)。

這是CTTelephonyNetworkInfo的部分功能,它是CoreTelephony框架的一部分。iOS7還增加了currentRadioaccessTechnology屬性和CTRadioAccessTechnologyDidChangeNotification到這個(gè)類(lèi)。還有一些新的字符串常量來(lái)定義可能的值,比如說(shuō)是CTRadioAccessTechnologyLTE。

【小技巧】:

[objc] view%20plain copy @interface AppDelegate ()    @property (nonatomic, strong) CTTelephonyNetworkInfo *networkInfo;   @end       @implementation AppDelegate    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {       self.networkInfo = [[CTTelephonyNetworkInfo alloc] init];    NSLog(@"Initial cell connection: %@", self.networkInfo.currentRadioAccessTechnology);    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(radioAccessChanged) name:  CTRadioAccessTechnologyDidChangeNotification object:nil];   }     - (void)radioAccessChanged {     NSLog(@"Now you're connected via %@", self.networkInfo.currentRadioAccessTechnology);   }   @end   

注意:研究一下CTTelephonyNetworkInfo.h文件來(lái)看看是否有其他無(wú)線網(wǎng)絡(luò)類(lèi)型的的字符串常量。如果設(shè)備沒(méi)有連上的話currentRadioAccessTechnology則會(huì)返回nil。

9、通過(guò)iCloud同步用戶設(shè)備的密碼iOS7以及Mavericks增加了iCloud%20Keychain來(lái)提供密碼,以及iCloud中一些敏感數(shù)據(jù)的同步。開(kāi)發(fā)者可以通過(guò)keychain中的kSecAttrSynchronizable%20key來(lái)遍歷dictionary對(duì)象。

由于直接處理keychain比較難,封裝庫(kù)提供了一個(gè)簡(jiǎn)單的處理keychain的方法。SSKeychain封裝庫(kù)可能是最有名的的一個(gè),作為一種福利,現(xiàn)在它支持在iCloud同步。

【小技巧】:

[objc] view%20plain copy - (BOOL)saveCredentials:(NSError **)error {       SSKeychainQuery *query = [[SSKeychainQuery alloc] init];       query.passWord = @"MySecretPassword";       query.service = @"MyAwesomeService";       query.account = @"John Doe";       query.synchronizable = YES;       return [query save:&error];   }       - (NSString *)savedPassword:(NSError **)error {       SSKeychainQuery *query = [[SSKeychainQuery alloc] init];       query.service = @"MyAwesomeService";       query.account = @"John Doe";       query.synchronizable = YES;       query.password = nil;       if ([query fetch:&error]) {           return query.password;       }       return nil;   }   

10、使用NSAttributedString顯示HTML在app中使用Webviews有時(shí)會(huì)讓人非常沮喪,即使只是顯示少量的HTMLneirong,Webviews也會(huì)消耗大量的內(nèi)容。現(xiàn)在iOS7讓這些變得簡(jiǎn)單了,你可以從用少量代碼在HTML文件中創(chuàng)建一個(gè)NSAttributedString。

【小技巧】:

[objc] view%20plain copy //htmlStr -> NSAttriubtedString  NSString *html = @"<bold>Wow!</bold> Now <em>iOS</em> can create <h3>NSAttributedString</h3> from HTMLs!";   NSDictionary *options = @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType};       NSAttributedString *attrString = [[NSAttributedString alloc] initWithData:[html dataUsingEncoding:NSUTF8StringEncoding]   options:options documentAttributes:nil error:nil];     //NSAttriubtedString -> htmlStr  NSAttributedString *attrString; // from previous code   NSDictionary *options = @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType};     NSData *htmlData = [attrString dataFromRange:NSMakeRange(0, [attrString length]) documentAttributes:options error:nil];   NSString *htmlString = [[NSString alloc] initWithData:htmlData encoding:NSUTF8StringEncoding];   

11、系統(tǒng)提供base64編碼

[objc] view%20plain copy NSData* sampleData = [@"Some sample data" dataUsingEncoding:NSUTF8StringEncoding];   NSString * base64String = [sampleData base64EncodedStringWithOptions:0];   NSData* dataFromString = [[NSData alloc] initWithBase64EncodedString:base64String options:0];   

12、獲取截圖事件的通知(UIApplicationUserDidTakeScreenshotNotification13、語(yǔ)音播報(bào)功能(AVSpeechSynthesizer)【小技巧】:

[objc] view%20plain copy AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc] init];   AVSpeechUtterance *utterance =      [AVSpeechUtterance speechUtteranceWithString:@"Wow, I have such a nice voice!"];    utterance.rate = AVSpeechUtteranceMaximumSpeechRate / 4.0f;   utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-US"]; // defaults to your system language   [synthesizer speakUtterance:utterance];   

14、UIScreenEdgePanGestureRecognizerUIScreenEdgePanGestureRecognizer 繼承自UIPanGestureRecognizer ,它可以讓你從屏幕邊界即可檢測(cè)手勢(shì)。

【小技巧】:

[objc] view%20plain copy UIScreenEdgePanGestureRecognizer *recognizer = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:  @selector(handleScreenEdgeRecognizer:)];   recognizer.edges = UIRectEdgeLeft;   [self.view addGestureRecognizer:recognizer];   

15、UIScrollViewKeyboardDismissMode滾動(dòng)的時(shí)候可以讓鍵盤(pán)消失是一種非常好的體驗(yàn),蘋(píng)果給UIScrollView添加了一個(gè)很好用的屬性keyboardDismissMode,現(xiàn)在僅僅只需要在Storyboard中改變一個(gè)簡(jiǎn)單的屬性,或者增加一行代碼,你的app可以和辦到和Messages%20app一樣的事情了。

[objc] view%20plain copy UIScrollViewKeyboardDismissModeNone     UIScrollViewKeyboardDismissModeOnDrag   UIScrollViewKeyboardDismissModeInteractive   

16、使用Core%20Image來(lái)檢測(cè)眨眼以及微笑iOS給Core%20Image增加了兩種人臉檢測(cè)功能:CIDetectorEyeBlink以及CIDetectorSmile。這也就是說(shuō)你現(xiàn)在可以在照片中檢測(cè)微笑以及眨眼。

【小技巧】:

[objc] view%20plain copy UIImage *image = [UIImage imageNamed:@"myImage"];   CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeFace                                             context:nil                                             options:@{CIDetectorAccuracy: CIDetectorAccuracyHigh}];   NSDictionary *options = @{ CIDetectorSmile: @YES, CIDetectorEyeBlink: @YES };   NSArray *features = [detector featuresInImage:image.CIImage options:options];   for (CIFaceFeature *feature in features) {       NSLog(@"Bounds: %@", NSStringFromCGRect(feature.bounds));       if (feature.hasSmile) {       NSLog(@"Nice smile!");      } else {       NSLog(@"Why so serious?");       }       if (feature.leftEyeClosed || feature.rightEyeClosed) {       NSLog(@"Open your eyes!");       }   }   

17、給textView的文字上加點(diǎn)擊事件【小技巧】:

[objc] view%20plain copy NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"This is an example by @marcelofabri_"];   [attributedString addAttribute:NSLinkAttributeName                            value:@"username://marcelofabri_"                            range:[[attributedString string] rangeOfString:@"@marcelofabri_"]];    NSDictionary *linkAttributes = @{NSForegroundColorAttributeName: [UIColor greenColor],                                    NSUnderlineColorAttributeName: [UIColor lightGrayColor],                                    NSUnderlineStyleAttributeName: @(NSUnderlinePatternSolid)};     textView.linkTextAttributes = linkAttributes;   textView.attributedText = attributedString;   textView.delegate = self;     //你也可以控制當(dāng)鏈接被點(diǎn)擊的時(shí)候會(huì)發(fā)生什么,實(shí)現(xiàn)這個(gè)可以使用UITextViewDelegate協(xié)議的新的shouldInteractWithURL方法,就像這樣:  - (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange {       if ([[URL scheme] isEqualToString:@"username"]) {           NSString *username = [URL host];            // do something with this username           // ...           return NO;       }       return YES; // let the system open this URL   }  

18、UI變化取消了擬物化,變成了扁平化設(shè)計(jì)

UITabbar,UIbarButtonItem,navigationBar,都以特殊形式渲染,圖片沒(méi)有內(nèi)部顏色,通過(guò)tinColor渲染圖片(開(kāi)發(fā)者可以通過(guò)渲染模式使用原圖顏色)。navigationBar及導(dǎo)航欄也作為self.view的內(nèi)容,所以self.view的原點(diǎn)從導(dǎo)航欄下面變成了,狀態(tài)欄的頂端。(可以通過(guò)self.navigationController.navigationBar.translucent以及self.edgesForExtendedLayout來(lái)決定是否以ios7或ios6樣式顯示)

19、sprite%20kit可以用系統(tǒng)自帶框架做小UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];  UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"好的" style:UIAlertActionStyleDefault handler:nil];  [alertController addAction:cancelAction];  [alertController addAction:okAction];  [self presentViewController:alertController animated:YES completion:nil];  

2、SizeClasses可以根據(jù)不同尺寸,橫屏豎屏在StoryBoard上或者Xib上對(duì)app進(jìn)行適配

3、Health%20Kit健康方面 

4Home%20Kit智能家居方面

5SceneKit游戲方面

6、Handoff如果你的程序有mac版本,那么它可以和ios版本進(jìn)行自由的交互

(%20例如系統(tǒng)的電話,短信,facetime功能)

7、CLFloor室內(nèi)定位CLLocation的floor可以告訴你當(dāng)前的樓層

8、TouchID指紋識(shí)別方面

9、PhotoKit一個(gè)新的相冊(cè)框架,替代了原來(lái)的AL

10、UIPopoverPresentationController其相當(dāng)于ipad中的UIPopoverController,在某個(gè)空間周邊顯示一個(gè)氣泡菜單

【小技巧】:

[objc] view%20plain copy MyViewController*   contentVC = [[MyViewController alloc]init];    contentVC.preferredContentSize = CGSizeMake(110, 160);    contentVC.modalPresentationStyle = UIModalPresentationPopover;     self.popover = contentVC.popoverPresentationController;     self.popover.delegate = self;    self.popover.backgroundColor = [UIColor greenColor];    self.popover.sourceView =button;    self.popover.sourceRect = button.bounds;     self.popover.permittedArrowDirections = UIPopoverArrowDirectionUp;    [self presentViewController:contentVC animated:YES completion:nil];//推出popover   

11、Cloud%20Kit其類(lèi)似于BaaS,與之不同的是,Cloud%20Kit傾向于對(duì)數(shù)據(jù)的集成。你可以不更改應(yīng)用現(xiàn)有的數(shù)據(jù)模型和結(jié)構(gòu),而只是使用 Cloud%20Kit 來(lái)從云端獲取數(shù)據(jù)或者向云端存儲(chǔ)數(shù)據(jù)。但是其最大限制在于只能用于蘋(píng)果端。

12、全新的通知機(jī)制http://blog.csdn.net/songhongri/article/details/39482067

13、定位權(quán)限的變化【小技巧】:

[objc] view%20plain copy // 當(dāng)使用iOS8定位的時(shí)候需要請(qǐng)求用戶授權(quán),且在info.plist里添加字段NSLocationAlwaysUsageDescription請(qǐng)求用戶授權(quán)的描述  // iOS7僅僅需要在info.plist里添加字段Privacy - Location Usage Description請(qǐng)求用戶授權(quán)的描述  if (IOS8) {  [self.maneger requestAlwaysAuthorization];//請(qǐng)求用戶授權(quán)  }  

14、各種小插件Today%20Widget%20Extension

http://blog.csdn.net/kuloveyouwei/article/details/44019815

第三方輸入法 Extension

Document%20Picker%20Extension

Photo%20Editing%20Extension

Shared%20Extension

Action%20Extension

Watch%20Extension

15、Metal%20Kit一套圖形接口 與OpenGL 和Direct3D類(lèi)似主要制作3D相關(guān)

16、Apple%20Pay蘋(píng)果支付相關(guān)sdk

17、tableviewcell自動(dòng)適應(yīng)高度如果cell用autolayout布局,只需要兩行代碼就可以實(shí)現(xiàn)自動(dòng)計(jì)算高度

[objc] view%20plain copy self.tableView.estimatedRowHeight = 44.0f;  self.tableView.rowHeight = UITableViewAutomaticDimension;  

18、WebKitWKWebView可以替代UIWebView

19、Swift語(yǔ)言 

iOS%2091、https網(wǎng)絡(luò)默認(rèn)https,如果不支持https,需要到info.plist做配置

2、后臺(tái)定位【小技巧】:

[objc] view%20plain copy _locationManager.allowsBackgroundLocationUpdates = YES;  

3、Bitcode4、inHouse需要進(jìn)入系統(tǒng)設(shè)置權(quán)限(彈窗同意)才能安裝5、URL%20scheme在iOS9中,如果使用URL%20scheme必須在"info.plist"中將你要在外部調(diào)用的URL%20scheme列為白名單,否則無(wú)法跳回來(lái)。

在info.plist中設(shè)置 LSApplicationQueriesSchemes類(lèi)型為數(shù)組,下面添加所有你用到的scheme

6、蘋(píng)方[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];  

9、Watch%20Connectivity由于watchOS%202的架構(gòu)變化,需要這么一個(gè)東西來(lái)對(duì)iPhone和Watch進(jìn)行雙向通信

10、Spotlight 可以讓自己的app在系統(tǒng)搜索欄搜到內(nèi)容

11、App%20Thinning可以針對(duì)設(shè)備對(duì)app優(yōu)化,讓安裝包變小

12、Safari%20Services%20Framework(SFSafariViewController)但你的app需要展示一個(gè)WebView又不需要太多定制的時(shí)候,用它來(lái)替換掉你現(xiàn)在在用的UIWebView或者WKWebView。他可以讓Safari以一個(gè)Controller的形式加載你的網(wǎng)頁(yè),和系統(tǒng)的Safari完全共享Cookie和Autofill等特性,最重要的,Safari的javaScript引擎

13、3D%20touchhttp://www.jianshu.com/p/b552bedbc3ef

14、UI%20Test可以用Xcode進(jìn)行項(xiàng)目的自動(dòng)化測(cè)試了

15、GameplayKit,ReplayKit,Model%20I/O對(duì)游戲的支持

16、語(yǔ)法相關(guān)(1)泛型  如:

[objc] view%20plain copy NSArray<NSString*>* datas;  

(2)可空標(biāo)記  

如:

[objc] view%20plain copy @property (nonatomic, strong) NSArray *__nonull names;  @property (nonatomic, strong, nonnull) NSarray *names;  

(3)kindof

可以讓返回值用kindof

17UIStackView類(lèi)似于安卓的線性布局

18、preferredStatusBarStyle控制器管理狀態(tài)欄

iOS%20101、User%20Notificationshttps://onevcat.com/2016/08/notification/

2、iMessage%20Apps tabBar.unselectedItemTintColor =[UIColor redColor];  

10、跟著系統(tǒng)字體變化

[objc] view%20plain copy self.labels.font =[UIFont preferredFontForTextStyle:UIFontTextStyleBody];    self.labels.adjustsFontForContentSizeCategory = YES;  

11、UIViewPropertyAnimator屬性動(dòng)畫(huà)器那么在iOS%2010之前,我們使用UIView做動(dòng)畫(huà)效果或者自定義一些layer的動(dòng)畫(huà),如果開(kāi)始了,一般無(wú)法進(jìn)行停止操作更不能暫停操作,而且一些非常復(fù)雜的動(dòng)畫(huà)處理也比較麻煩,但是在iOS10,蘋(píng)果退出了一個(gè)全新的API  UIViewPropertyAnimator,可供我們處理動(dòng)畫(huà)操作UIViewPropertyAnimator 是 iOS%2010 中新增的一個(gè)執(zhí)行 View動(dòng)畫(huà)的類(lèi),具有以下特點(diǎn):

可中斷性

可擦除

可反轉(zhuǎn)性

豐富的動(dòng)畫(huà)時(shí)間控制功能

12、UIColor新方法iOS%2010 蘋(píng)果官方建議我們使用sRGB,因?yàn)樗阅芨茫矢S富。

[objc] view%20plain copy 派生到我的代碼片+ (UIColor*)colorWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha   NS_AVAILABLE_IOS  (10_0);  

13、ipv6適配

14、UITextContentType

在iOS 10 UITextField添加了textContentType枚舉,指示文本輸入?yún)^(qū)域所期望的語(yǔ)義意義。

使用此屬性可以給鍵盤(pán)和系統(tǒng)信息,關(guān)于用戶輸入的內(nèi)容的預(yù)期的語(yǔ)義意義。例如,您可以指定一個(gè)文本字段,用戶填寫(xiě)收到一封電子郵件確認(rèn)uitextcontenttypeemailaddress。當(dāng)您提供有關(guān)您期望用戶在文本輸入?yún)^(qū)域中輸入的內(nèi)容的信息時(shí),系統(tǒng)可以在某些情況下自動(dòng)選擇適當(dāng)?shù)逆I盤(pán),并提高鍵盤(pán)修正和主動(dòng)與其他文本輸入機(jī)會(huì)的整合。

15、UIScrollView新增refreshControl

16、判斷系統(tǒng)版本

//值為 1 [[[[UIDevice currentDevice] systemVersion] substringToIndex:1] integerValue]

//值為10.000000[[UIDevice currentDevice] systemVersion].floatValue,

//值為10.0 [[UIDevice currentDevice] systemVersion]

17、Xcode8不能用插件

http://vongloo.me/2016/09/10/Make-Your-Xcode8-Great-Again/?utm_source=tuicool&utm_medium=referral

18、[[UIApplication sharedApplication] openURL被廢棄

【小技巧】:

用 [[UIApplication sharedApplication] openURL:nil options:nil completionHandler:nil]代替。

19、字體變化

ios10字體變大,有可能字體顯示不全,所以lable大小不要寫(xiě)死

20、UICollectionView性能優(yōu)化

iOS 10 對(duì)UICollectionView進(jìn)一步的優(yōu)化。

UICollectionView cell pre-fetching預(yù)加載機(jī)制UICollectionView and UITableView prefetchDataSource新增的API針對(duì)self-sizing cells的改進(jìn)Interactive reordering

21、https適配

iOS 9中默認(rèn)非HTTS的網(wǎng)絡(luò)是被禁止的,當(dāng)然我們也可以把NSAllowsArbitraryLoads設(shè)置為YES禁用ATS。不過(guò)iOS 10從2017年1月1日起蘋(píng)果不允許我們通過(guò)這個(gè)方法跳過(guò)ATS,也就是說(shuō)強(qiáng)制我們用HTTPS,如果不這樣的話提交App可能會(huì)被拒絕。但是我們可以通過(guò)NSExceptionDomains來(lái)針對(duì)特定的域名開(kāi)放HTTP可以容易通過(guò)審核。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 和林格尔县| 高密市| 镇康县| 南漳县| 三原县| 红河县| 合水县| 麻栗坡县| 郓城县| 克什克腾旗| 共和县| 双城市| 凤庆县| 木兰县| 横峰县| 惠东县| 南丹县| 泸定县| 周宁县| 莆田市| 泰顺县| 通城县| 杂多县| 海阳市| 甘孜县| 抚松县| 珲春市| 鄂托克旗| 屏边| 宁南县| 安达市| 苏尼特右旗| 扶余县| 新化县| 玉环县| 习水县| 泸溪县| 汤阴县| 清河县| 文成县| 滨州市|