2012-01-10 84 views
27

我有一個垂直滾動的uiscrollview - 想象一個標籤欄應用程序的「關於此應用程序」頁面,它需要一個滾動視圖。它只包含幾張圖片,一段視頻和一些文本(只有視頻已經被編碼 - 其餘的已經被放置在GUI中)。在故事板(界面生成器?)Xcode 4.2中,所有東西都應該設置好,並且工作正常,但視圖只與屏幕上顯示的大小相同,是不是可以在故事板中手動安排項目最初在屏幕外 - 你需要向上滾動?到目前爲止,我發現的唯一方法是在可見視圖上設計它們,然後使用箭頭鍵導航它們。在xcode 4.2中的scrollview中設計與故事板

回答

39

我感到你的痛苦。我發現的唯一方法是手動平移尺寸檢查器中的滾動視圖,以顯示您希望直觀編輯的視圖部分。

使用UIView來包含元素,以便它們相對於此視圖進行定位。將視圖作爲子視圖添加到0,0的滾動視圖中。

  1. pan:使用Y座標說-200,然後編輯內容。
  2. 在隱藏部分放置更多內容,再次平移以揭示新的房地產
  3. 完成後,恢復ScrollView的高度和X,Y位置的值。

確保滾動視圖框架矩形小於包含的視圖。

+16

很好的解決方案,不應該存在的問題! – 2012-11-09 16:31:30

51

在故事板中選擇viewController,然後在屬性檢查器中將'size'更改爲'freeform' 。然後將視圖/滾動視圖的「高度」更改爲您所需的大小。在運行應用程序時,struts和彈簧的默認設置應該正確地重新調整視圖的大小,但應該仔細檢查。

+0

這似乎工作正常,直到我試圖調整視圖或滾動視圖的故事板,在這一點上的內容都翹曲相對於視圖大小的變化...... – John 2012-01-11 13:26:59

+0

約翰,其實這不是問題。如果您轉到該「滾動視圖」的「大小檢查器」並修改「自動調整大小」。清除矩形內的水平和垂直箭頭。 (我也清除了「右」和「底」箭頭,以便我的滾動視圖可以綁定到左上角)。然後,滾動視圖的大小不應受父視圖大小的影響。 – 2012-07-12 09:20:25

+0

有沒有像尺寸或自由形式。 – 2012-10-14 06:07:55

2

只需在任何您想要調整大小的視圖中取消選中「Autoresize子視圖」,它應該保留所有對象的大小。

4

在iOS 6.0上,您可以在滾動視圖中拖動容器視圖。這會在當前場景之外自動爲您的內容創建一個新的視圖。然後,您可以根據需要調整此視圖的大小以適應您的內容。

我相信你仍然需要在運行時設置ScrollView的內容高度,但至少你可以設計你的內容視圖,而不必在IB上滾動。

+0

我認爲你應該設置容器視圖的高度,而不是ScrollView的內容高度。我想知道的是如何使用佈局約束將Container Views高度設置爲嵌入視圖的高度。你有什麼想法嗎? – 2013-04-28 14:30:17

25

新:2013年3月26日

我偶然發現了什麼,我認爲是的UIScrollView直接在故事板處理的更簡單的方法。

  1. 無需代碼,只是故事板設置。這可能是iOS6.1/Xcode 4.6中的新功能
  2. 不需要禁用約束(即在文件檢查器中取消選中「使用自動佈局」作爲故事板文件)
  3. 無需添加UIScrollView * scrollView; in .h
  4. 不需要添加self.scrollView.contentSize = ...在viewWillAppear中或viewDidLoad中的覆蓋

這裏是我做的(重要的部分突出了**):(見code

  1. 創建一個新的項目,分鏡啓用
  2. 下降一個UIScrollView ,在視圖控制器的身份檢查器中設置類
  3. 在屬性檢查器中,將模擬度量標準下的大小更改爲自由格式**
  4. 選擇滾動查看;在屬性檢查器中,打開「滾動啓用」和「背景」爲「白色」(你會發現爲什麼 - 如果你不知道)
  5. 在Size Inspector下(選擇滾動視圖),將高度更改爲900示例**
  6. 添加一個按鈕,一個在頂部,另一個在底部
  7. 爲按鈕和簡單的Log sender添加buttonTouchUpInside的默認處理程序。

請參閱Code選擇視圖控制器並滾動視圖並檢查檢查器。

+6

關於這個問題有很多文獻,但你是我遇到的第一個實際上回答這個該死的問題的人。 FREEFORM修復了它。我花了很長時間試圖解決這個問題,謝謝分享! – 2013-04-03 05:15:27

+3

視圖控制器的自由形式? – coolcool1994 2013-04-18 00:19:29

0

我一直在爲此苦苦掙扎了一段時間,而且我嘗試過的每件事都失敗了。

具體來說,我試圖實現的是一個自由大小的模式對話框,其中一個可滾動視圖包含另一個視圖的容器。我有很多不同的結果,包括偶爾使它正常工作。大多數情況下,我看起來完全正確,但沒有滾動。

終於下載了Dickey Singh的代碼,它工作完美,但沒有什麼特別之處。 (出色的清潔解決方案BTW)。所以,我添加了一個容器視圖,就像我在代碼中一樣,它打破了!

經過一番試驗後,我研究了發生了什麼。只是忍耐和我在一起。

1)使用自動佈局,滾動視圖的大小似乎決定了滾動邊界將是什麼。在「USer Defined Runtime Attributes」中設置「contentSize」似乎對此沒有影響,在「viewWillDisplay」或「viewDidLoad」中也沒有設置「contentSize」或「bounds」。因此,如果滾動視圖的初始大小爲800x800,那將是可以顯示的所有空間。出於這個原因,當我想要一個可滾動區域時,我創建一個容器視圖,然後將滾動視圖放入內容中。

2)如果沒有自動佈局,在「用戶定義的運行時屬性」中設置「contentSize」就像在「viewDidLoad」中以編程方式設置一樣。我更喜歡使用「用戶定義的運行時屬性」,因爲它與佈局保持一致。該解決方案使您可以更靈活地使用滾動視圖,因爲它在設計時可以是任意大小。 3)不管自動佈局如何,如果滾動區域內的任何視圖與水平或垂直框架邊界完全匹配,則滾動視圖停止作爲滾動視圖。這適用於我自己的代碼以及我試過的每種可能配置中的Dickey Singh代碼。

我不知道什麼是造成(3),但它顯然是一個錯誤。

我希望這可以幫助那些努力使用滾動視圖的人。我想有些人在沒有任何問題的情況下使用它們,有些人(比如我)已經注意到了他們的問題。

0

我目前正在開發一個iOS 7的應用程序,我完全按照@Dickey Singh的回答,但它在開始時並不起作用。 檢查故事板後,我發現我們還需要爲保存scrollView的視圖控制器添加自動佈局約束。 看來,這樣的自動佈局約束會在Xcode 5之前自動添加,但現在我們需要自己完成。 添加約束的方法:首先在故事板中選擇視圖控制器;在頂部菜單中輸入'編輯';選擇「解決自動佈局問題」;選擇'在容器中添加缺少約束'。完成:-)

10

只需將視圖控制器的「模擬大小」更改爲自由形式並設置比通常大小更大的高度,您將能夠看到需要編輯的所有插座。

+1

你改變了我的生活,謝謝:D – 2014-11-27 19:49:02

+0

這應該是被接受的答案..更優雅的解決方案 – Ciprian 2016-01-10 15:15:31