2017-08-27 85 views
0

好吧,我所擁有的是一個UIScrollView,它被約束在主視圖的所有四邊,垂直和水平居中,並設置爲與視圖具有相等的寬度和高度。我在UIScrollView上放置的所有子視圖都在我運行該應用程序時顯示出來,正是我想要它們的位置,但只有底部的UITextView不是。看起來我已經嘗試了各種約束組合,但是當我運行應用程序時,無論我做什麼,它都不會出現。這裏是限制在界面生成器的截圖:UITextView在UIScrollView上不可見

Interface Builder

甚至當我運行前預覽文件Main.storyboard它看起來像這樣:

Preview of Main.storyboard

但是,當我實際運行應用程序,屏幕缺少UITextView,即使當我通過多種方式更改約束時:

Running the app

任何有關這個問題的幫助將不勝感激!提前致謝。

+2

爲什麼這些紅色限制?您有自動佈局問題需要解決。 –

+0

是的,我知道,但我不能讓他們不要紅。有什麼建議麼? – James

+0

不能確切地說明它是什麼,但是這條線給出了一個疑問:一個UIScrollView被約束在主視圖的所有四邊,垂直和水平居中。看起來像你給出了一些不必要的約束。你可以檢查所有的視圖層次結構在哪裏,你會看到右上角的紅色標記。 –

回答

0

避免把所有的子視圖直接scrollView內。自動佈局將分解。 您需要:

  • 添加UIViewUIScrollView裏面,有約束0 - 0 - 0 - 0leading - top - bottom - trailingUIScrollView,並把那裏面UIView所有子視圖。

之後,you need to set thecontentSizeUIScrollView通過代碼。

此外,您可以:

  • add missing constraints,看看有什麼缺失。

enter image description here

  • 在UIStoryBoard左側面板(文檔大綱),你可以按紅色箭頭顯示出來,看看有什麼丟失或衝突。

enter image description here

退房Apple documentation瞭解更多詳情。

+1

感謝您的非常詳細的答案!有效! – James

+0

@James Great! :) – 2017-08-28 01:46:30

0

如果你希望你的scrollView只有垂直滾動時,不應將其高度等於其superView因此將其刪除,只是將寬度設置爲它superView,然後應該計算基於裏面 我提供subViews高度你可以在你的scrollView中拖動一個UIView,並將約束設置爲它的四個邊,並將其命名爲containerView,然後將其寬度設置爲等於背景視圖,並開始佈置其中的視圖,而不是滾動視圖內:) 如果所有視圖的高度在scrollView中很清楚,它可以推斷出scrollView的高度爲 ,在這種情況下你可以設置一個固定的高度爲containerView,比如800擺脫紅線,並檢查它是如何工作:)

0

我注意到一些線索,你可能必須解決這可能可以解決這個問題。由於滾動視圖是由它的內容的元件延伸,必須與在滾動視圖的每個元素明確地處理:

  1. 有關頂部ImageView的不很好的約束,則需要給它的寬度或縱橫比。修復imageView問題可能會解決textview高度問題,即使它不是一個好開始。

  2. TextView底部錨點等於scrollView底部錨點,但是你必須知道textView也是一種scrollView。所以在同一時間限制對方是不合理的。因爲他們都沒有明確的高度。你可以嘗試在textView中鍵入一些單詞,它至少會通過它的內容給出高度,然後scrollView可以檢測到textView bottomAnchor。你可能會看到一些東西。

  3. 你的scrollView的高度等於視圖的高度也很奇怪,scrollView不應該首先限制它的高度。因爲它的高度是不變的,所以它不能再是「滾動」視圖。你應該讓它的寬度等於視圖,並且讓高度由它的元素的高度決定。那麼它將是字面上的scrollview。

希望它可以幫助

相關問題