本文中描述的功能要求以下:面試
若是沒有這三種狀況,您的代碼要麼不會編譯,要麼不會呈現實時預覽。swift
咱們能夠開始使用它的功能今天從根本上加快和改進咱們的發展進程-在不改變咱們的UIKit應用程序中的代碼行的狀況下,子類UIButton它在本身周圍畫了一條邊界:xcode
final class BorderedButton: UIButton {
var cornerRadius: CGFloat { ... }
var borderWidth: CGFloat { ... }
var borderColor: UIColor? { ... }
}
複製代碼
一般,若是咱們想測試UI元素的性能,咱們必須將其添加到應用程序中的視圖中,生成和運行,並導航到該屏幕。可是使用xcode 11,咱們如今能夠看到與代碼編輯器並行的預覽,方法是在BorderedButton:安全
使用名爲動態替換,Xcode能夠在不從新編譯的狀況下更新此預覽-在進行代碼更改的瞬間內。這使您可以之前所未有的方式快速地進行原型更改。bash
想看看你的按鈕是如何處理長標題的嗎?在調用setTitle(_:for:)在您的預覽,並測試潛在的修補程序在您的基礎實現編輯器
UIViewPreview是咱們建立的自定義泛型結構,以便方便地主持UIView子類。請隨便下載源代碼並將其直接添加到項目中。佈局
爲了使Xcode Preview爲非SWIFUI應用程序工做所需的條件導入和IOS 13 BasSDK設置,合併適當的依賴關係將變得複雜,所以在這個特定的例子中,咱們認爲最好直接嵌入這些文件。 性能
![]()
假設咱們的應用程序FavoriteButton-遠房表妹(也許按組成)BorderedButton..在默認狀態下,它顯示標題爲「收藏」,並顯示♡圖標。當它isFavorited屬性設置爲true,標題設置爲「不喜歡」,並顯示 ♡̸ 圖標。測試
咱們能夠同時預覽兩個UIViewPreview單個SwiftUI中的實例Group:ui
鎖鏈previewLayout和padding方法的每一個成員。Group..你能夠用這些其餘View方法若要更改預覽的外觀,請執行如下操做。
帶着iOS 13中的暗模式,最好是反覆檢查您的自定義視圖是否配置了動態顏色,或者以其餘方式兼顧了光線和黑暗的外觀。
一個簡單的方法是使用ForEach元素中的每一個狀況呈現預覽。ColorScheme枚舉:
當呈現預覽時ForEach,使用previewDisplayName方法以幫助區分全部枚舉值。
咱們可使用相同的方法在各類視圖中預覽咱們的視圖。動態類型尺寸:
Xcode預覽在將應用程序本地化爲多種語言時特別節省時間。與在不一樣語言和區域之間來回配置模擬器的麻煩相比,這種新方法產生了巨大的差別。
比方說,除了英語以外,您的應用程序還支持各類從右到左的語言..你能夠確認你的RTL邏輯像預期的那樣工做:
咱們不知道一個容易使用的方法NSLocalizedString有明確的地點。您可能會遇到從包中的字符串文件中檢索本地化字符串的麻煩,但在大多數狀況下,在預覽中只需編寫硬編碼文本便可。
SwiftUI預覽不只限於視圖,還能夠與視圖控制器一塊兒使用。經過建立習俗UIViewControllerPreview類型利用一些新的UIStoryboardIOS 13中的類方法,咱們能夠輕鬆地在各類設備上預覽咱們的視圖控制器-一個在另外一個設備之上:
目前尚未辦法得到SWIFUI設備預覽在景觀方向。儘管您可使用固定大小的預覽佈局來近似這一點,但請注意,它不會尊重iPhone上的安全區域,也不會在iPad上正確呈現拆分視圖。
儘管咱們大多數人還須要幾年時間才能在咱們的應用程序中發佈SwiftUI(不管是出於選擇仍是必要),但咱們均可以當即受益於Xcode 11在MacOS Catalina上所提供的數量級改進。
你認爲如何?請經過加咱們的交流羣 點擊此處進交流羣 ,來一塊兒交流或者發佈您的問題,意見或反饋。