2017-08-15 57 views
0

我正在製作聊天應用程序,並創建了使用Container view在視圖中實現的角色組件。我希望它具有最大的寬度,所以在iPhone上它將是全角,但是在寬度固定的中央的iPad上。同樣在橫向的iPhone上,它應該是可滾動的(我已經使用Scroll view,但完全在橫向方向上表現奇怪)。如何在Xcode中構建響應式佈局(不是自動佈局)?

Create persona component

這是怎麼創建角色分量的模樣。它有View中的所有元素,但Xcode告訴他們是錯誤的。現在,它具有所有元素分離,它們具有寬度< = 350和後和領先的邊緣> = 0 - 這一切運作良好,但是當我插入鑑於此組分(它看起來像這樣):

It looks like this

...使用Container viewScroll view包裝它行爲怪異。我給頂部,底部,左側和右側的Container view約束都等於0,但Xcode顯示警告y不等於預期。它不能使Container view大到Scroll view。我也想讓它滾動,因此當屏幕高度不足以顯示整個表單時,您可以滾動它。但是現在當你將屏幕旋轉到橫向視圖尺寸Container view時也會改變,所以Scroll view不可滾動。有任何想法嗎?

回答

1

您可以在Storyboard中執行此操作,方法是根據屏幕大小選擇要自定義元素的Attributes inspector,然後單擊要自定義屬性左側的+標誌。但是,這隻提供了非常有限的選項,因此您最好在代碼中以編程方式檢查屏幕大小,或者對iPad和iPhone使用不同的Storyboards

要使用不同的故事板,你可以做到以下幾點:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

    let screenWidth = UIScreen.main.bounds.width 
    let orientation = UIDevice.current.orientation 

    if screenWidth > x { //use iPad storyboard 
     let storyboard = UIStoryboard(name: "Main", bundle: nil) 
     let vc = storyboard.instantiateViewController(withIdentifier: "identifier") 
     self.window.rootViewController = vc 
    } else { 
        let storyboard = UIStoryboard(name: "OtherStoryboard", bundle: nil) 
     let vc = storyboard.instantiateViewController(withIdentifier: "otherIdentifier") 
     self.window.rootViewController = vc 
    } 
... 
} 
+0

如果創建不同stroryboards如何實現它向現有和切換它們依賴於設備? – Masiama

+0

那麼可滾動容器視圖呢?沒有滾動視圖它根本不可滾動,只是使用它沒有任何變化,只出現反彈效果 – Masiama

+0

我已經包含切換故事板的代碼。 –