2011-06-06 72 views
1

我有一個UIScrollView(由視圖控制器管理),我正在使用全屏幕和子視圖。全屏版本工作正常 - 子視圖不能。ScrollView作爲子視圖不尊重框架的邊界

子視圖的位置使其佔據屏幕的下半部分,在底部有一個小的20像素左右的邊緣。

最初它顯示在正確的位置,但會覆蓋底部邊距 - 即使滾動視圖的框架設置爲離開邊距。

當我拖動視圖向上滾動時,整個視圖向上移動並遮住窗口的頂部。當框架碰到頂部的導航欄並開始像正常滾動視圖一樣滾動時,框架停止移動。如果我滾動它足夠它最終顯示屏幕底部的邊距。

我不知道該怎麼做 - 我試過每個春天的組合我都能想到。我現在正在查看子視圖裁剪。

下面的圖片。第一個顯示初始頁面加載時的滾動視圖,除了下邊距覆蓋外正確定位。滾動視圖具有白色背景。

Initial load

第二張圖片顯示它向上滾動朝頂:

Scrolled up toward the top

第三圖像顯示它滾動一路攀升到頂部 - 注意,較低的利潤率已經成爲可見。

enter image description here

+0

你可以發佈這個截圖嗎? – 2011-06-06 13:03:31

+0

我發佈了截圖,謝謝你的關注。 – vlad259 2011-06-06 13:35:09

回答

3

我不是100%確定這一個,但值得出手:我的猜測是,你可能不會在你的桌子正確設置bounds屬性。

要解決此問題,最簡單的方法是設置myscrollview.clipsToBounds = true

+0

你是男人!真的非常感謝你! – vlad259 2011-06-06 13:40:21

+0

很高興它的工作! :) – 2011-06-06 14:18:50

0

這裏肯定有些問題。我認爲會發生的是,您將爲其自身的子視圖添加相同的scrollview實例。所以,基本上你留下的只是一個例子。任何你添加到「子視圖」中的東西,基本上都會添加到超級視圖中,因爲它是同一個對象。

例如,這是我認爲你正在做的視圖控制器:

//... 
private UIScrollView myScrollView; 
public override void ViewDidLoad() 
{ 
    this.myScrollView = new UIScrollView(); 
    this.View = this.myScrollView; 
    this.View.AddSubview(this.mySrcollView); // same instance 
    this.myScrollView.AddSubview(aUIButton); // "aUIButton" will be added in View also, since it is the same object 
} 

如果是這樣的話,那就錯了。我建議不要改變控制器的視圖。如果你想擁有一個擁有全屏UIScrollView的控制器,只需創建它並將其添加爲子視圖,確保AutoSizesSubviews屬性爲true。至少,這是我的理解。

+0

好的,我錯了......! – 2011-06-06 14:08:28

+0

值得一試雖然 - 謝謝你的時間! – vlad259 2011-06-07 08:06:28