2013-02-13 118 views
5

我正在開發一個應用程序,關閉自動佈局,默認設置爲Iphone 5.現在我有一個UIView在屏幕的底部,當我在IB的尺寸選項之間切換時,UIView正確地向上移動以修復自身屏幕的底部。但是,當我在iPhone 4或模擬器上測試時,它不會向上移動,而是被截斷。如何修復UIView到屏幕底部?

我該怎麼做才能讓應用程序底部的UIView爲較小的iPhone 4分流?

請看下面的例子

我基本上要被向上分流白盒以填充灰色框下方的間隙。

更新

在視圖層次而言,有一種含有視圖,然後將白色部分,你看到的是一個簡單的UIView(白色背景)與內部的滾動視圖。該項目是相當新的,所以設置非常簡單,沒有代碼來定位任何UIViews。

+0

您使用的是AutoLayout嗎?或AutoresizingMask? – Jaybit 2013-02-13 17:44:09

+0

我將AutoLayout關閉,我正在使用自動調整功能 – ORStudios 2013-02-13 17:45:27

+0

@IconicDigital,您的4英寸和3.5英寸圖像沒有比較類似於...請參閱我的更新回答 – foundry 2013-02-13 18:02:01

回答

7

獲取Y座標,獲取屏幕高度,減去主視圖上方的任何UI元素(如狀態欄),並減去所放置的UIView的高度。例如:

float y = [UIScreen mainScreen].bounds.size.height - [UIApplication sharedApplication].statusBarFrame.size.height - myView.frame.size.height; 
[myView setFrame:CGRectMake(0, y, myView.frame.size.width, myView.frame.size.height)]; 

這裏是一個非常典型的完整的例子... 2013 ...這很好地工作與在頂部導航欄一個UITableViewController,並且您使用自動佈局是

Position a UIView relative to the bottom of the parent view?

希望它可以幫助別人。

2

將AutoLayout關閉,您將視圖放置在屏幕上的位置是固定值。要有這個自動調整,你需要一些代碼。您將需要使用autoresizingMask。下面是從autoresizingMask/

UIView *view = [[UIView alloc] init]; 
[view setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin]; 
3

你應該有你的彈簧和支柱(自動調整大小掩碼)設置這樣的事情...

enter image description here

,那麼該觀點保持它的距離使用的實例屏幕的腳。

更新

您的評論,你說你有這個設置還沒有正確的觀點仍然是向下推。但是,您問題中的圖像不會與「喜歡」類似。在4英寸版本中,您的視圖似乎在屏幕頂部滾動,而3.5英寸版本則不是這種情況。我懷疑其中的原因(或僅僅是你必須滾動4英寸以適應屏幕上的問題?)...你可以檢查,也許更新你的問題更多關於你的視圖層次的細節。

+0

嗨,我已將它設置爲這樣但它仍然無視它。 – ORStudios 2013-02-13 17:52:54

+0

@IconicDigital - 好的,那很奇怪。你有任何代碼製作/設置視圖的框架參數,或類似的東西? – foundry 2013-02-13 17:54:05

+0

有趣的是,如果我在IB的尺寸之間切換,它可以很好地移動它。如果你在模擬器中測試它會將其切斷。 – ORStudios 2013-02-13 17:57:26

1

最簡單的方法是選擇你的視圖,然後轉到編輯器 - >針 - >底部空間到SuperView。無論設備的分辨率如何,此選項都會將您的視圖修復到容器視圖的底部。

1

擴展@Joel答案,對於iOS 7,我們不需要減去statusBar高度。

float y = [UIScreen mainScreen].bounds.size.height - myView.frame.size.height; 
[myView setFrame:CGRectMake(0, y, myView.frame.size.width, myView.frame.size.height)];