2014-03-06 34 views
1

我正在開發一個針對iOS6/7的應用程序,並且我已經失去了兩個小時盯着故事板,試圖理解爲什麼autolayout沒有做我想做的事情。Autolayout - 錨定到底部右側

基本上,我有一個包含滾動視圖的場景,並且在其中我想要在右下角固定一個UIIMage。因此,我設置了圖像4個約束:

  • 寬度等於
  • 高度等於
  • 底部空間,上海華和
  • 尾隨空間的SuperView

的XCode不會埋怨定位,所以我運行我的應用程序有信心,只是發現它沒有顯示在任何方向。它只是無處可尋!

我知道要找到自動佈局如何實現約束並做了它的魔法,我必須檢查view.bounds矩形。我在事件viewDidAppear檢查,發現其值爲如同預期:

圖片pos是:0.000000,0.000000 106.000000x103.000000

框架當然是在故事板的實際位置,我猜測是可以預料的。

這裏是我的故事板的屏幕帽: Twilight zone or plain dizzy developer error?

任何想法?

更新: 一些更多的信息: 如果我刪除所有的約束和運行應用程序,圖像視圖顯示在我的縱向視圖的右下方,但轉動時,如預期,不顯示。

更新2: 這一切都應該落在可怕的UIScrollView和AutoLayout線程中。最後,我還原爲使用UIView,其中是一個UIScrollView,其中包含我想要滾動的所有內容(以便在橫向模式下沒有任何文本字段被鍵盤隱藏)。我想掛在底部的圖像留在容器UIView中,並且它都按預期工作。

+0

請在'ViewDidAppear'中記錄'view.frame'(而不是'view.bounds'),因爲它位於superview的座標系中(所以它會告訴你視圖在哪裏)。另外,你有沒有設置滾動視圖的'contentSize'? –

+0

當記錄view.frame時,它顯示我在故事板中定義的初始大小和位置,但據我所知,這是預期的。通過檢查view.frane,您在使用AutoLayout時無法獲取視圖的當前位置。我沒有設置scrollSize的'contentSize'(當鍵盤顯示爲向上移動內容時,我會設置它)。但是,正如我在我的問題中所添加的那樣,如果我刪除了約束條件,那麼圖像會以縱向模式顯示在右下角,但我不認爲這適用。 –

+0

你能澄清一下,如果這個視圖是在滾動視圖內還是浮動視圖之上? –

回答

0

如果你想要錨定到右下角,Programmatic autoresizingMask對我來說更加一致。

所以如果你想以固定右下角,你想左邊距靈活的上邊距靈活

yourView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin; 

這意味着,下邊距,右邊距,高度和寬度將所有這略微相反IB的保持不變,保留在您的視圖的右下角。

+0

我試過了,但還是沒有顯示。你確定我仍然可以在基於AutoLayout的故事板中使用自動調整屏蔽嗎? –

+0

等一下,所以你的imageView沒有出現? – Logan

+0

沒有。我可以在故事板中看到它(屏幕截圖上的紅色矩形),但它並不隱藏,但我看不到它! –

相關問題