WWDC2017 筆記 - Cocoa Touch 中的新特性

這篇文章是 What’s New in Cocoa Touch / UIKit Session 201 的一些整理。【基于OC】
轉自我的 Blog: Danny's Dream

Drag Drop 新的交互方式 拖拽

Drag

需要 Drag 的對象要 add 一個 UIDragInteraction ,用法類似于 UIGestureRecognizer 。
UIDragInteraction 有一個 UIDragInteractionDelegate 的代理,可以提供數據,浮起的動畫,和自定義的拖動時的動畫。

Drop

接收 Drag 的對象的容器,容器要實現一個 UIDropInteractionDelegate 的代理,可以來根據拖入的對象調整當前的界面。

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

配合剪切板 UIPasteConfiguration 食用會更加。

這個功能手機上可以在 文件 這個系統 app 中體驗,里面的 tableview 和 collectionview 的 item 都是支持拖拽的。

File Manager

UIDocumentBrowserViewController

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


構造方法如下【該構造還提供了文件篩選的能力】:
UIDocumentBrowserViewController* view  = [[UIDocumentBrowserViewController alloc]initForOpeningFilesWithContentTypes:@[@".txt",@".pages",@".pdf"]];復制代碼

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

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

新的 UINavigationBar

增加了大的標題欄【覺得并不好看啊】,新增的 api,控制后面的 vc 層級是否需要繼續展示大的 title,或者全部使用大的 title。可以在 Mail 的系統 app 中體驗這個特性。

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

增加了統一的 navigation 搜索欄,不用再加在 tableview 的 header 中了。

 self.navigationController.navigationItem.searchController復制代碼

現在 navigation bar 是獨立的,和你的 content vie 無關,為了更好的處理這些系統 view 的布局的變化,提供了

  self.view.safeAreaLayoutGuide // auto layoutself.view.safeAreaInsets // 代碼布局- (void)viewSafeAreaInsetsDidChange{//當布局變化的時候的回調
}復制代碼

UIScrollView

解決了 navigation vc 和 scrollview 的 contentInset 的沖突的問題,現在 navigation vc 不在修改 contentInset 了。
增加了 contentInsetAdjustmentBehavior 這個屬性,默認為 UIScrollViewContentInsetAdjustmentAutomatic ,可以用來自定義滑動時候的便宜效果。
通過 adjustedContentInset 可以獲取當前的偏移量。

TableView 的修改

  • 滑動操作
    Row 增加了 UISwipeActionsConfiguration ,用來處理滑動操作。
    UISwipeActionsConfiguration 通過 UIContextualAction 數組來初始化,可以配置不同的動作,左滑右滑等,還能配置 UISwipeActionsConfiguration 的 performsFirstActionWithFullSwipe 【Bool】屬性 來決定第一個事件是否響應完整的滑動。

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

    self.tableView.separatorInsetReference = UITableViewSeparatorInsetFromAutomaticInsets;復制代碼

Swift 4 和 Foundation 的更新

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

系統級別的手勢事件控制

AutoLayout 和 Scroll View

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

動態類型

用于系統級別的調整大小,獲取動態的字體的大小。設計到 Auto Layout 的相關更新。

密碼自動填寫功能

場景是在 web 上登錄賬戶之后,點擊下線 app ,然后調整 appstore,打開 app ,輸入密碼,這時候可以自動填寫。【應該需要網頁 / app 端的支持】
這里沒有具體展開,有個專門介紹這個 session 【Introducing Password AutoFil】

Asset Catalogs 的調整

現在顏色也能放在 Asset Catalogs 中了,更方便的使用廣色域的顏色。代碼里可以通過下面的方法獲取。【swift 下面可以直接看到顏色,心酸的 OC 啥都沒】

UIColor *color = [UIColor colorNamed:@"purple"];復制代碼

可縮放大小的圖片

  • 圖片用于不同尺寸的場合
  • 系統基本的 Dynamic type 縮放
  • tab bar 的圖片


tabbar image 大的 size ,障礙人士。【使用這個的話,會默認啟用】

提升

通過 UIScreen 的 maximumFramesPerSecond 可以獲取當前屏幕的刷新率
獲取屏幕的刷新率,增強滑動和動畫效果。

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

本地化

針對某些國家從右到左的閱讀習慣的改變,舉得例子是 設置界面的反轉。

That’s all,當然這些是簡單的介紹,具體的還有見各個子 session,詳細的在官方的文檔中均已更新。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258451.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258451.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258451.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[Hadoop] - 自定義Mapreduce InputFormatOutputFormat

在MR程序的開發過程中,經常會遇到輸入數據不是HDFS或者數據輸出目的地不是HDFS的,MapReduce的設計已經考慮到這種情況,它為我們提供了兩個組建,只需要我們自定義適合的InputFormat和OutputFormat,就可以完成這個需求&a…

PS 色調——老照片效果

這就是通過調色使照片顯得發黃。 R_new0.393*R0.769*G0.189*B; G_new0.349*R0.686*G0.168*B; B_new0.272*R0.534*G0.131*B; clc; clear all; Imageimread(9.jpg); Imagedouble(Image); Image_newImage; Image_new(:,:,1)0.393*Image(:,:,1)0.769*Image(:,:,2)0.189*Image(:,:,3…

jsp出現錯誤

昨天在調試頁面時發生了如圖顯示的異常&#xff0c;它出現的原因是當<jsp:forward>或<jsp:include>標簽沒有參數時&#xff0c;開始標簽和結束標簽</jsp:forward>或</jsp:include>之間不能有空格&#xff0c;不能換行。解決辦法&#xff1a;刪除標簽之…

門限回歸模型的思想_Stata+R:門檻回歸教程

來源 | 數量經濟學綜合整理轉載請聯系進行回歸分析&#xff0c;一般需要研究系數的估計值是否穩定。很多經濟變量都存在結構突變問題&#xff0c;使用普通回歸的做法就是確定結構突變點&#xff0c;進行分段回歸。這就像我們高中學習的分段函數。但是對于大樣本、面板數據如何尋…

【數論】[CF258C]Little elephant and LCM

題目 分析&#xff1a;枚舉最大數&#xff0c;然后找出它所有因數p1…….pk&#xff0c; 從中任意選取一些數&#xff0c;這些數的LCM|這個數且&#xff0c;這些數的最大LCM就是枚舉的這個數&#xff0c;且若pi<aj<pi1則前i個數可以放在j這個位置&#xff0c;即j這個位置…

為普通Object添加類似AttachedProperty的屬性

為普通Object添加類似AttachedProperty的屬性 周銀輝 我們知道&#xff0c;在WPF中對應一個DependencyObject&#xff0c;我們很容易通過AttachedProperty來為類型附加一個屬性。但對于普通的Object而言&#xff0c;這就不可行了。 我現在遇到這樣一個問題&#xff0c;下面有一…

python 操作RabbitMQ

pip install pika使用API操作RabbitMQ基于Queue實現生產者消費者模型View Code 對于RabbitMQ來說&#xff0c;生產和消費不再針對內存里的一個Queue對象&#xff0c;而是某臺服務器上的RabbitMQ Server實現的消息隊列。#!/usr/bin/env python import pika# ###################…

python和嵌入式哪個容易_嵌入式與python選哪個

從概念上來說&#xff0c;嵌入式和Python的區別還是比較明顯的&#xff0c;嵌入式是一個開發領域&#xff0c;而Python則是一門編程語言。嵌入式開發是開發領域的一個重要分支&#xff0c;是物聯網領域技術的重要組成部分&#xff0c;可以說有物聯網的地方就離不開嵌入式開發。…

二階傳遞函數的推導及幾種求解方法的比較

二階系統是指那些可用二階微分方程描述的系統&#xff0c;其電路形式是由兩個獨立動態元器件組成的電路。 二階系統電路包括二階低通電路、二階高通電路、二階帶通電路和二階帶阻電路。 下面分別給出以上二階系統傳遞函數的推導過程&#xff0c;并以二階低通電路的沖激響應為例…

前端技術-調試工具(上)

頁面制作之調試工具 常用的調試工具有Chrome瀏覽器的調試工具&#xff0c;火狐瀏覽器的Firebug插件調試工具&#xff0c;IE的開發人員工具等。它們的功能與使用方法大致相似。Chrome瀏覽器簡潔快速&#xff0c;功能強大這里主要介紹Chrome瀏覽器的調試工具。 打開 Google Chrom…

新版Microsoft Edge支持跨平臺跨設備瀏覽

之前一直使用Google Chrome瀏覽器&#xff0c;可以隨意安裝插件擴展程序&#xff0c;無廣告&#xff0c;這是我鐘愛她的原因。但是之后不能登錄Google賬號&#xff0c;不能實現跨設備應用&#xff0c;就想找一款好用的替代品&#xff0c;近期發現了新版的Microsoft Edge&#x…

BZOJ1050 [HAOI2006]旅行

Description 給你一個無向圖&#xff0c;N(N<500)個頂點, M(M<5000)條邊&#xff0c;每條邊有一個權值Vi(Vi<30000)。給你兩個頂點S和T &#xff0c;求一條路徑&#xff0c;使得路徑上最大邊和最小邊的比值最小。如果S和T之間沒有路徑&#xff0c;輸出”IMPOSSIBLE”&…

biosrecovery什么意思_BIOS中的每個中文是什么意思

BIOS中的每個中文是什么意思&#xff0c;請對照的翻譯一下Time/System Time時間/系統時間Date/System Date日期/系統日期Level 2 Cache二級緩存System Memory系統內存Video Controller視頻控制器Panel Type液晶屏型號Audio Controller音頻控制器Modem Controller調制解調器(Mod…

百度網盤7.3.1.10版本增加工作空間功能,可實現百度網盤與電腦文件夾同步

百度網盤新增的工作空間是一款文件同步的產品&#xff0c;支持電腦本地與云端之間的文件同步&#xff0c;多設備間文件自動保持同步、支持查看文件每次都修改的歷史版本。功能類似于onedrive。如果有同步需求的小伙伴可以嘗試下載最新版的百度網盤試用該功能哦。下載網址&#…

ubuntu+idea intellij配置android開發環境

最近對移動開發產生興趣&#xff0c;決定在未來幾年內利用空余時間開發一些app或游戲什么的&#xff0c;鑒于ios開發成本較高&#xff0c;且自身對java相對熟悉&#xff0c;因此選擇了學習android。都說android市場不很很好&#xff0c;收益較難&#xff0c;但是仍覺得只要功夫…

typeof的用法

typeof可以返回變量的類型&#xff0c;返回值為字符串&#xff0c;其值有 "undefined" "boolean" "string" "number" "object" "function" 而 typeof(null)會返回object 轉載于:https://www.cnblogs.com/lhyhappy…

opencv 最大連通域_opencv 查找連通區域 最大面積實例

今天在弄一個查找連通的最大面積的問題。要把圖像弄成黑底&#xff0c;白字&#xff0c;這樣才可以正確找到。然后調用下邊的方法&#xff1a;RETR_CCOMP:提取所有輪廓&#xff0c;并將輪廓組織成雙層結構(two-level hierarchy),頂層為連通域的外圍邊界&#xff0c;次層位內層邊…

JS 函數柯里化

在計算機科學中&#xff0c;柯里化是把接受多個參數的函數變換成接受一個單一參數&#xff08;最初函數的第一個參數&#xff09;的函數&#xff0c;并且返回接受余下的參數而且返回結果的新函數的技術。——詳見 維基百科柯里化就是預先將某些參數傳入&#xff0c;得到一個簡單…

LTI系統的物理可實現性與希爾伯特變換

產品的設計一般為線性時不變系統&#xff0c;要求系統具有物理可實現性&#xff0c;從時域上看&#xff0c;h(t)具有因果性&#xff1b;從頻域上看&#xff0c;|H(jw)|符合佩利—維納準則。任何具有因果性的系統&#xff0c;|H(jw)|的實部R(w)滿足希爾伯特變換&#xff0c;|H(j…

垂死掙扎還是涅槃重生 -- Delphi XE5 公布會歸來感想

Delphi 是一個基本上被我遺忘的工具&#xff0c; 要不是在使用RapidSql , 我是收不到Embarcadero 公司發出的邀請來參加Delphi XE5的公布會的。 有人可能要問為什么是Embarcadero &#xff08;名稱很拗口&#xff09;而不是Borland 開Delphi 公布會&#xff0c; 這是由于Borla…