电竞比分网-中国电竞赛事及体育赛事平台

分享

WWDC2017 筆記

 godfloo 2017-06-16

這篇文章是 What’s New in Cocoa Touch / UIKit Session 201 的一些整理?!净贠C】
轉(zhuǎn)自我的 Blog: Danny's Dream

Drag Drop 新的交互方式 拖拽

Drag

需要 Drag 的對(duì)象要 add 一個(gè) UIDragInteraction ,用法類似于 UIGestureRecognizer 。
UIDragInteraction 有一個(gè) UIDragInteractionDelegate 的代理,可以提供數(shù)據(jù),浮起的動(dòng)畫,和自定義的拖動(dòng)時(shí)的動(dòng)畫。

Drop

接收 Drag 的對(duì)象的容器,容器要實(shí)現(xiàn)一個(gè) UIDropInteractionDelegate 的代理,可以來(lái)根據(jù)拖入的對(duì)象調(diào)整當(dāng)前的界面。

TableView, CollectionView, TextView, TextField, WebView 原生控件都支持

配合剪切板 UIPasteConfiguration 食用會(huì)更加。

這個(gè)功能手機(jī)上可以在 文件 這個(gè)系統(tǒng) app 中體驗(yàn),里面的 tableview 和 collectionview 的 item 都是支持拖拽的。

File Manager

UIDocumentBrowserViewController

多了一個(gè)文件管理的 VC,默認(rèn)里面會(huì)顯示當(dāng)前 app 權(quán)限以內(nèi)的文件,包括本地的和存在 iCloud 的【如果三方 app 在 info.plist 中聲明了 UISupportsDocumentBrowser 或者 UIFileSharingEnabled 和 LSSupportsOpeningDocumentsInPlace 的話,可以獲得第三方 app 的文件】。


構(gòu)造方法如下【該構(gòu)造還提供了文件篩選的能力】:

UIDocumentBrowserViewController* view  = [[UIDocumentBrowserViewController alloc]
                                              initForOpeningFilesWithContentTypes:@[@".txt",@".pages",@".pdf"]];

值得注意的是官方文檔中提到,在使用該 VC 時(shí)。

    1. 務(wù)必把文件管理里的 VC 作為應(yīng)用的 根 VC,不要把它放在 navigation,tab 或者 split 視圖中,也不要通過(guò)模態(tài)的樣式展現(xiàn)出來(lái)。
      有上述需求的話用 UIDocumentPickerViewController 來(lái)替代。
    1. 由于文件可能被任何 app 中的 UIDocumentBrowserViewController 修改,所以對(duì)文件的操作盡量通過(guò) UIDocument 子類 或者 NSFilePresenter 和 NSFileCoordinator 對(duì)象來(lái)操作。

新的 UINavigationBar

增加了大的標(biāo)題欄【覺(jué)得并不好看啊】,新增的 api,控制后面的 vc 層級(jí)是否需要繼續(xù)展示大的 title,或者全部使用大的 title??梢栽?Mail 的系統(tǒng) app 中體驗(yàn)這個(gè)特性。

   //聲明大標(biāo)題
    self.navigationController.navigationBar.prefersLargeTitles = YES;
    //包含三種模式 aoto / always / never (后續(xù) present 的view 是否需要大標(biāo)題)
    self.navigationController.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeAutomatic;

增加了統(tǒng)一的 navigation 搜索欄,不用再加在 tableview 的 header 中了。

 self.navigationController.navigationItem.searchController

現(xiàn)在 navigation bar 是獨(dú)立的,和你的 content vie 無(wú)關(guān),為了更好的處理這些系統(tǒng) view 的布局的變化,提供了

  self.view.safeAreaLayoutGuide // auto layout
  self.view.safeAreaInsets // 代碼布局

- (void)viewSafeAreaInsetsDidChange{
  //當(dāng)布局變化的時(shí)候的回調(diào)
}

UIScrollView

解決了 navigation vc 和 scrollview 的 contentInset 的沖突的問(wèn)題,現(xiàn)在 navigation vc 不在修改 contentInset 了。
增加了 contentInsetAdjustmentBehavior 這個(gè)屬性,默認(rèn)為 UIScrollViewContentInsetAdjustmentAutomatic ,可以用來(lái)自定義滑動(dòng)時(shí)候的便宜效果。
通過(guò) adjustedContentInset 可以獲取當(dāng)前的偏移量。

TableView 的修改

  • 滑動(dòng)操作
    Row 增加了 UISwipeActionsConfiguration ,用來(lái)處理滑動(dòng)操作。
    UISwipeActionsConfiguration 通過(guò) UIContextualAction 數(shù)組來(lái)初始化,可以配置不同的動(dòng)作,左滑右滑等,還能配置 UISwipeActionsConfiguration 的 performsFirstActionWithFullSwipe 【Bool】屬性 來(lái)決定第一個(gè)事件是否響應(yīng)完整的滑動(dòng)。

  • 新的分界線
    可以配置相對(duì)值和絕對(duì)值的 Inset

    self.tableView.separatorInsetReference = UITableViewSeparatorInsetFromAutomaticInsets;

Swift 4 和 Foundation 的更新

這里是 OC 版的,我就不展開了,KeyPath 的新類型,還增加了 block 的 KVO 【然鵝 OC 并沒(méi)有】。

系統(tǒng)級(jí)別的手勢(shì)事件控制

AutoLayout 和 Scroll View

class UIScrollView { var contentLayoutGuide: UILayoutGuide { get } var frameLayoutGuide: UILayoutGuide { get }}

動(dòng)態(tài)類型

用于系統(tǒng)級(jí)別的調(diào)整大小,獲取動(dòng)態(tài)的字體的大小。設(shè)計(jì)到 Auto Layout 的相關(guān)更新。

密碼自動(dòng)填寫功能

場(chǎng)景是在 web 上登錄賬戶之后,點(diǎn)擊下線 app ,然后調(diào)整 appstore,打開 app ,輸入密碼,這時(shí)候可以自動(dòng)填寫。【應(yīng)該需要網(wǎng)頁(yè) / app 端的支持】
這里沒(méi)有具體展開,有個(gè)專門介紹這個(gè) session 【Introducing Password AutoFil】

Asset Catalogs 的調(diào)整

現(xiàn)在顏色也能放在 Asset Catalogs 中了,更方便的使用廣色域的顏色。代碼里可以通過(guò)下面的方法獲取?!緎wift 下面可以直接看到顏色,心酸的 OC 啥都沒(méi)】

UIColor *color = [UIColor colorNamed:@"purple"];

可縮放大小的圖片

  • 圖片用于不同尺寸的場(chǎng)合
  • 系統(tǒng)基本的 Dynamic type 縮放
  • tab bar 的圖片


tabbar image 大的 size ,障礙人士?!臼褂眠@個(gè)的話,會(huì)默認(rèn)啟用】

提升

通過(guò) UIScreen 的 maximumFramesPerSecond 可以獲取當(dāng)前屏幕的刷新率
獲取屏幕的刷新率,增強(qiáng)滑動(dòng)和動(dòng)畫效果。

Metal apps 可以更好的得到提升。

本地化

針對(duì)某些國(guó)家從右到左的閱讀習(xí)慣的改變,舉得例子是 設(shè)置界面的反轉(zhuǎn)。

That’s all,當(dāng)然這些是簡(jiǎn)單的介紹,具體的還有見各個(gè)子 session,詳細(xì)的在官方的文檔中均已更新。 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多